reqwest::client не имеет метода get

Согласно этому примеру, я должен быть в состоянии запустить get на клиенте, созданном с помощью компоновщика клиента:

use reqwest::header;
let mut headers = header::Headers::new();
headers.set(header::Authorization("secret".to_string()));

// get a client builder
let client = reqwest::Client::builder()
    .default_headers(headers)
    .build()?;
let res = client.get("https://www.rust-lang.org").send()?;

Ниже приведен код, который я написал.

let client = Client::builder()
        .gzip(true)
        .timeout(Duration::from_secs(10))
        .build();
let resp = client.get("https://wiki.mozilla.org/images/f/ff/Example.json.gz");

Это ошибка, которую я получаю:

error[E0599]: no method named `get` found for type `std::result::Result<reqwest::Client, reqwest::Error>` in the current scope
  --> examples/gzipped_http_files.rs:86:23
   |
86 |     let resp = client.get("https://wiki.mozilla.org/images/f/ff/Example.json.gz");

Что я делаю неправильно?

1 ответ

Поскольку build() функция возвращает вам Result и вы не можете вызывать клиентские функции reqwest над результатом, вам нужно получить значение внутри него.

Я предполагаю, что вы хотите получить значение и распространить ошибку на вершину в этом сценарии.

Было бы удобно использовать ? оператор здесь.

Поэтому вам нужно изменить следующий вызов сборки следующим образом:

let client = Client::builder()
    .gzip(true)
    .timeout(Duration::from_secs(10))
    .build()?; // This ? operator gets the value if the result is ok and throws error to upper level 
Другие вопросы по тегам