Crates.io | stock-symbol |
lib.rs | stock-symbol |
version | 0.5.0 |
source | src |
created_at | 2022-08-09 04:42:02.863002 |
updated_at | 2024-05-20 01:21:22.439652 |
description | A data type for representing stock symbols. |
homepage | |
repository | https://github.com/Cassy343/stock-symbol |
max_upload_size | |
id | 641558 |
size | 24,044 |
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.
Symbol
s can be easily converted from and to &str
s 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.
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);
The serde
feature enables serde support. Symbol
s 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 Symbol
s directly from sqlx
queries
and fetch results. Similar to serde
, Symbol
s are encoded and decoded as &str
s.