【发布时间】:2021-10-08 18:15:17
【问题描述】:
我正在处理货币。
我希望能够从“USD”等股票代码中解析它们。
我已经实现了一个货币特征,我想要一个编译时股票代码。
我想遍历所有实现 Currency 的类型,以检查它们的股票代码是否等于正在解析的字符串。如果是这样,我想返回该货币的一种类型。
到目前为止我有这个:
pub trait Currency {
const TICKER_SYMBOL: String;
}
#[derive(debug)]
struct USD;
impl Currency for USD { const TICKER_SYMBOL: String = "USD".to_string();}
impl FromStr for dyn Currency {
type Err = &'static str;
fn from_str(s: &str) -> Result<Self, Self::Err> {
todo!()
}
}
【问题讨论】:
-
没有这样的东西。您必须自己创建一个集合以进行迭代。
-
出于好奇:为什么要在类型系统中表示不同的货币?为什么不使用
struct Currency { ticker_symbol: String }之类的东西? -
我建议使用枚举而不是具有不同货币的特征
标签: rust metaprogramming