Когда мы должны использовать unwrap против ожидаемого в Rust - PullRequest
3 голосов
/ 19 апреля 2020

Я новичок в ржавчине и пытаюсь понять, когда мы должны использовать unwrap против ожидаемого.

Вот пример кода:

use std::env;

fn main() {
    let args: Vec<String> = env::args().collect();

    let query = args.get(1).unwrap();
    println!("query from unwrawp: {}", query);

    let query = args.get(1).expect("insufficient arguments");
    println!("query from expect: {}", query);

    //$ cargo run hello
    //OUTPUT:
    //query from expect: hello
    //query from unwrawp: hello

}

Единственное отличие, которое я заметил, - это пользовательская пани Ожидается сообщение c. Являются ли эти два взаимозаменяемыми или есть какой-то особый сценарий ios, где мы должны использовать один поверх другого?

1 Ответ

5 голосов
/ 19 апреля 2020

Rust не имеет функции перегрузки , поэтому должен быть способ объявить "unwrap с сообщением", и это будет expect.

  1. expect == unwrap с сообщением
  2. expect_err == unwrap_err с сообщением

Об использовании сценария ios из " unwrap vs ожидайте" Rust Book (Ch 9) говорит:

Использование ожидаемого вместо развертывания и предоставление хороших сообщений об ошибках может передать ваше намерение и отследить источник Пани c проще. Поскольку это сообщение об ошибке начинается с указанного нами текста ... будет легче найти, откуда в коде это сообщение об ошибке.

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