6 个版本 (破坏性)
0.5.0 | 2024年5月20日 |
---|---|
0.4.0 | 2023年12月24日 |
0.3.1 | 2022年12月19日 |
0.3.0 | 2022年8月13日 |
0.1.0 | 2022年8月9日 |
#53 在 财务
23KB
548 行
表示 股票符号 的数据类型。
Symbol
相关的数据在栈上而不是堆上分配。为了适应这种优化,Symbol
的长度限制为 7 个字符。内存中的表示也允许进行高度优化的比较,性能超过栈分配数组。请注意,由于其优化的大小,Symbol
实现了 Copy
特性,应该通过值而不是引用传递。
Symbol
可以通过 from_str
和 as_str
轻松地从和到 &str
转换。为了方便起见,Symbol
还实现了 AsRef<str>
和 Deref<Target = str>
。此外,还实现了对字符串类型的相等比较。
示例
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);
功能
serde
功能启用 serde 支持。目前,Symbol
以字符串形式序列化,并从字符串反序列化。未来可能不支持其他格式。如果需要更多直接的控制,则可以创建自定义序列化器/反序列化器。
sqlx
功能启用从 sqlx
查询直接编码和解码 Symbol
的支持以及获取结果。类似于 serde
,Symbol
以 &str
的形式编码和解码。
依赖关系
~0–1.4MB
~28K SLoC