我有一个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,
}
}
我是 Rust 新手,并没有完全了解何时使用或何时使用运算match
符的复杂性。if let
?
我的实现是惯用的 Rust 吗?这对我来说似乎相当冗长,并且看起来像一个到处都会出现的模式,所以我可以想象这可以更简洁地处理;是这样吗?