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财务

MIT 许可证

23KB
548

表示 股票符号 的数据类型。

Symbol 相关的数据在栈上而不是堆上分配。为了适应这种优化,Symbol 的长度限制为 7 个字符。内存中的表示也允许进行高度优化的比较,性能超过栈分配数组。请注意,由于其优化的大小,Symbol 实现了 Copy 特性,应该通过值而不是引用传递。

Symbol 可以通过 from_stras_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 的支持以及获取结果。类似于 serdeSymbol&str 的形式编码和解码。

依赖关系

~0–1.4MB
~28K SLoC