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