我一直在写一个数据存储模块,作为一个技术练习,以掌握一些基本的Rust,但我在实现一个trait时遇到了一些问题,该trait可以将不同的类型转换为可以存储在文本文件中的字符串。以无符号整数为例,我最初打算实现它如下:
impl<T: num_traits::sign::Unsigned> DataFormatting for T {
fn as_str_data(&self) -> String {
format!("{}", *self)
}
fn from_str_data(string_data: String) -> T {
string_data.parse::<T>().unwrap()
}
}
字符串
然而,由于我之前在String
上实现了DataFormatting
,Rust警告String
的冲突实现,因为“在未来的版本中,上游crates可能会为类型'std::string::String'添加一个新的特征'num_traits::Unsigned'的impl”。经过一些研究,它看起来像是支持未来的兼容性,我最好用宏自动列出相关类型,但是,作为Rust的新手,我不确定如何才能不太尴尬地做到这一点。
1条答案
按热度按时间ergxz8rk1#
你可以用这样的宏来实现:
字符串