Я запутался в ключевом слове Some(T)
.
Я хочу проверить наличие двух переменных, если определено значение (не None
). Если это так, значение этих переменных обрабатывается.
Я знаю шаблон match
, который работает следующим образом:
match value {
Some(val) => println!("{}", val),
None => return false,
}
Если я использую этот шаблон, он получит очень грязно:
match param {
Some(par) => {
match value {
Some(val) => {
//process
},
None => return false,
}
},
None => return false,
}
Это не может быть правильным решением.
Это возможность спросить, если параметр и значение is_some()
Это повлияет на такой код:
if param.is_some() && value.is_some() {
//process
}
Но если я так делаю, мне всегда нужно развернуть param
и value
, чтобы получить доступ к значениям.
Я думал о чем-то подобном, чтобы избежать этого. Но этот код не работает:
if param == Some(par) && value == Some(val) {
//process
}
Идея состоит в том, что значения доступны par
и val
, как в версии match
.
Есть ли любое решение сделать что-то вроде этого?