stock-symbol

Crates.iostock-symbol
lib.rsstock-symbol
version0.5.0
sourcesrc
created_at2022-08-09 04:42:02.863002
updated_at2024-05-20 01:21:22.439652
descriptionA data type for representing stock symbols.
homepage
repositoryhttps://github.com/Cassy343/stock-symbol
max_upload_size
id641558
size24,044
Ian Smith (Cassy343)

documentation

README

A data type for representing stock symbols.

The data associated with a Symbol is allocated on the stack rather than the heap. In order to accomodate this optimization, the length of a Symbol is limited to 7 characters. The representation in memory also allows for highly optimized comparisons, exceeding the performance of stack-allocated arrays. Note because of its optimized size, Symbol implements the Copy trait, and should be passed by value rather than by reference.

Symbols can be easily converted from and to &strs via from_str and as_str. For convenience, Symbol also implements AsRef<str>, and Deref<Target = str>. Moreover, equality comparison against string types is implemented for Symbol as well.

Examples

use stock_symbol::Symbol;

// Make a new symbol
let symbol = Symbol::from_str("AAPL").unwrap();

// Symbols cannot be empty, and must contain fewer than 8 characters
assert!(Symbol::from_str("").is_err());
assert!(Symbol::from_str("12345678").is_err());

// Symbols implement Copy
let symbol_copy = symbol;
assert_eq!(symbol_copy, symbol);

// They can also be compared to strings...
assert_eq!(symbol, "AAPL");

// ...and easily converted into strings
let symbol_str: &str = symbol.as_str();
assert_eq!(symbol_str, "AAPL");

// Symbol also implements Ord and Hash for use in other data structures
let symbol2 = Symbol::from_str("BAC").unwrap();
assert!(symbol < symbol2);

let mut map = std::collections::HashMap::new();
map.insert(symbol, 123.0f64);

Features

The serde feature enables serde support. Symbols are currently serialized as, and deserialized from strings. Other formats are unlikely to be supported in the future. If more direct control is needed, then a custom serializer/deserializer can be made.

The sqlx feature enables support for encoding and decoding Symbols directly from sqlx queries and fetch results. Similar to serde, Symbols are encoded and decoded as &strs.

Commit count: 8

cargo fmt