Многие вызовы функций в Rust возвращают тип std::result::Result
, который является перечислением.Наличие такого типа возврата имеет свои преимущества, но написание сопоставления выглядит утомительным для небольшой задачи.
Например, я пытался найти время, которое занимает определенная часть моего кода.Я пробовал SystemTime::now()
в сочетании с duration()
:
let now = SystemTime::now();
let result = cvar
.wait_timeout(started, Duration::from_millis(20000))
.unwrap();
started = result.0;
if *started == false {
*started = true;
}
println!("Thread 1 :: Exiting...after {:?}s ", now.elapsed().unwrap());
Это дает мне вывод в виде
Thread 1 :: Exiting...after Duration { secs: 6, nanos: 999860814 }s
Я знаю, что могу получить желаемый результат, используясопоставить аналогично этому, как в документах :
match now.elapsed() {
Ok(elapsed) => {
println!("{}", elapsed.as_secs());
}
Err(e) => {
println!("Error: {:?}", e);
}
}
Это будет несколько дополнительных строк, которые на самом деле не способствуют логике приложения.
Нет ли сокращения для выполнения такой операции сопоставления?