Есть ли сокращенная форма матча в Rust? - PullRequest
0 голосов
/ 25 мая 2018

Многие вызовы функций в 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);
    }
}

Это будет несколько дополнительных строк, которые на самом деле не способствуют логике приложения.

Нет ли сокращения для выполнения такой операции сопоставления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...