35

我正在尝试使用reqwest 0.10.0-alpha.2从给定的 URL 下载文本文件,这看起来像是一个合适的工具。我的 Cargo.toml 文件中有这个:

[package]
name = "..."
version = "0.1.0"
authors = ["Y*** <y***@***.***>"]
edition = "2019"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
reqwest = "0.10.0-alpha.2"

依赖似乎解决了,我有我的 Cargo.lock 文件。

我从文档中提取了这个片段

let body = reqwest::blocking::get("https://www.rust-lang.org")?
    .text()?;

println!("body = {:?}", body);

但我收到此错误:

  |  
  |     let body = reqwest::blocking::get("https://www.rust-lang.org")?.text()?;  
  |                         ^^^^^^^^ could not find `blocking` in `reqwest`  

为什么?我确实在上面链接的文档“这需要启用可选的阻止功能”中看到这一行。可能就是这样。但是,我也不清楚如何在 Rust 中为库启用“功能”。


我也试过这个(一些在黑暗中拍摄):

use reqwest::blocking;

同样的错误:

 |
 | use reqwest::blocking;
 |     ^^^^^^^^^^^^^^^^^ no `blocking` in the root

按照@edwardw 的回答在“reqwest”中启用“阻塞”,然后也必须更改?unwrap. 不确定,但可能?来自旧版本的 rust 或 sth。但它不适合我。

let body = reqwest::blocking::get("https://www.rust-lang.org")
    .unwrap()
    .text();
println!("body = {:?}", body);
4

1 回答 1

55

它是 crate 的可选功能。您必须在依赖项中显式启用它:

[dependencies]
reqwest = { version = "0.10.0-alpha.2", features = ["blocking"] }

reqwest::blocking文档确实提到了它:

这需要blocking启用可选功能。

于 2019-11-18T03:13:17.917 回答