如果我有一些类型为
我的朴素方法:
Option<T>
的数字,我希望选择第一个是Some
而不是None
的数字 - 是否有惯用的方法来实现这一点?我的朴素方法:
pub fn pick_first_option_available<T>(a: Option<T>, b: Option<T>, c: Option<T>) -> Option<T> {
match a {
Some(a) => Some(a),
None => match b {
Some(b) => Some(b),
None => match c {
Some(c) => Some(c),
None => None,
},
},
}
}
以上方法的一个明显问题是只能处理有限数量的选项(3个)。我更希望有一个更通用的函数。
这里有一个相关的主题 链接,但它处理的是相加而不是选择选项。