что это какая-то хрень получилась, особенно с is_some() и unwrap()
struct Test {
a: f64
b: f64
c: f64
}
impl Test {
fn new(args: &[String]) -> Result<Test, &'static str> {
let mut a: Option<f64> = None;
let mut b: Option<f64> = None;
let mut c: Option<f64> = None;
// ...parsing...
let a: f64 = match a {
Some(x) => x,
None => {
if b.is_some() && c.is_some() {
b.unwrap() + c.unwrap()
} else {
return Err("blabla")
}
}
}
let b: f64 .....
.....
Test{a, b, c}
}
}
Суть в том что есть структура с рядом параметров, эти параметры парсятся с аргументов командной строки. Если задано хотя бы два любых аргумента, то третий можно посчитать. И после выполнения функции new хочу чтобы была уже структура со всеми параметрами, но выглядит как дичь.
лучше матчить тогда уж
`match (a, b, c) { (Some(a), Some(b), Some(c)) => {..}, ... }
мне кажется там вложенность безумная получится, потому что в реальном варианте аргументов 5
вложенность будет 1, а вот вариантов дофига
"вложенность" в таком исполнении не зависит от количества вариантов match (a, b, c, d, e) { (Some(a), Some(b), Some(c), Some(d), Some(e)) => {..} ... }
Обсуждают сегодня