我看到它std::convert::Into有一个实现任何实现的东西std::convert::From:
impl<T, U> Into<U> for T where U: From<T>
Run Code Online (Sandbox Code Playgroud)
有更具体的实现From,虽然Into目前只有3个特定的实现,这使得它似乎是From默认实现的主流决定.我确信有些时候我只想实现Into而不是From,但我没有看到它们.
我有一个Option包含一些 JSON 的。如果是Some,则必须转换内部 JSON,但如果是None,则必须保留None。
这就是我目前实施的方式:
struct One;
struct Other;
impl One {
pub fn convert(&self) -> Other {
Other {}
}
}
fn example(attr: Option<One>) -> Option<Other> {
match attr {
Some(attr) => Some(attr.convert()),
None => None,
}
}
Run Code Online (Sandbox Code Playgroud)
我是新来的锈和不完全获得时使用的复杂性match,if let或时使用的?运营商。
我的实现是 Rust 惯用的吗?对我来说似乎比较冗长,而且看起来像一个到处都会出现的模式,所以我可以想象这可以更简洁地处理;是这样吗?