情況1。
v1 = None
v2 = Some(vec[..])
result = Some(vec[..])
情況二。
v1 = Some(vec[..])
v2 = None
result = Some(vec[..])
案例3。
v1 = Some(vec[..])
v2 = Some(vec[..])
result = Some(vec[..])
情況四。
v1 = None
v2 = None
result = None
有沒有通用的方法來實作這個?
uj5u.com熱心網友回復:
您可以只使用一個匹配陳述句來表示您的案例:
let result = match (v1, v2) {
(res@Some(_), None) => res,
(None, res@Some(_)) => res,
(Some(r1), Some(r2)) => Some(r1.into_iter().chain(r2).collect()),
_ => None
};
操場
uj5u.com熱心網友回復:
您可以利用Options 可以轉換為Iterators并使用的事實Iterator::reduce:
v1.into_iter()
.chain(v2.into_iter())
.reduce(|mut v1, mut v2| {
v1.append(&mut v2);
v1
})
鏈接兩個Option迭代將給予我們一個迭代器的產率是0(如果同時v1和v2均None),1(如果任一v1或v2為無),或2(如果兩個v1和v2不None)載體。Iterator::reduce如果迭代器中有 2 個或更多向量,則只會“減少”帶有閉包的迭代器,否則將回傳迭代器中唯一的向量(如果有)。
鐵銹游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354203.html
下一篇:PowerQuery條件聯接
