当前位置: 首页 > 知识库问答 >
问题:

`std::future::Future`的trait`未实现d::结果::Result`

吕宇定
2023-03-14

我正在尝试运行基本的reqwest示例:

extern crate reqwest;
extern crate tokio;

#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
    let res = reqwest::Client::new()
        .get("https://hyper.rs")
        .send()
        .await?;

    println!("Status: {}", res.status());

    let body = res.text().await?;

    println!("Body:\n\n{}", body);

    Ok(())
}

我得到的错误:

   --> src/main.rs:6:15
    |
6   |       let res = reqwest::Client::new()
    |  _______________^
7   | |         .get("https://hyper.rs")
8   | |         .send()
9   | |         .await?;
    | |______________^ the trait `std::future::Future` is not implemented for `std::result::Result<reqwest::Response, reqwest::Error>`

Rust版本:rustc 1.39.0(4560ea788 2019-11-04)

库版本:

reqwest = "0.9.22"
tokio = { version = "0.2.0-alpha.6", features = ["full"] }

有人知道这里出了什么问题吗?

共有1个答案

井疏珂
2023-03-14

和这里一样的问题,只是反过来。您使用的是< code>reqwest-0.9,默认情况下使用阻塞接口。更新到< code>reqwest-0.10以获取异步接口。

如果无法更新到 reqwest-0.10,则 reqwest-0.9 中的异步接口位于 reqwest::async 中。例如 reqwest::async::Client::new(...)

 类似资料:
  • Future trait 是 Rust 异步编程的中心。一个Future就是可以产生值的异步计算(尽管该值可能为空,例如())。一种简化版本的 Future trait 可能如下所示: trait SimpleFuture { type Output; fn poll(&mut self, wake: fn()) -> Poll<Self::Output>; } enum Pol

  • 我尝试使用Tokio库在生锈中初始化具有异步功能的服务器: 这会抛出一个错误,表示: 当我将鼠标悬停在<code>侦听器</code>上时,其类型未知。

  • 并行开发挺复杂的,特别是在试图用好线程和锁的过程中。如果要用到条件变量或std-atomics(一种无锁开发方式),那就更复杂了。C++0x提供了future和promise来简化任务线程间的返回值操作;同时为启动任务线程提供了packaged_task以方便操作。其中的关键点是允许2个任务间使用无(显式)锁的方式进行值传递;标准库帮你高效的做好这些了。基本思路很简单:当一个任务需要向父线程(启动

  • <future>头文件提供处理异步结果(在其他线程上执行额结果)的工具。 头文件内容 namespace std { enum class future_status { ready, timeout, deferred }; enum class future_errc { broken_promise, future_already_retrieved

  • 我克隆了https://gitlab.com/pwoolcoc/soup并运行了示例文件。一切正常,但是当我用与示例文件相同的文件创建一个新项目时,我遇到了一个错误。代码是: 货物档案 错误: