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

trait std::ops::Try 未针对 impl 实现

姬英耀
2023-03-14

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

use std::collections::HashSet;
use std::fmt::Error;
use soup::Soup;
use reqwest;
fn main() -> Result<(), Box<Error>> {
    let resp = reqwest::get("https://docs.rs/soup/0.1.0/soup/")?;
    let soup = Soup::from_reader(resp)?;
    let result = soup
        .tag("section")
        .attr("id", "main")
        .find()
        .and_then(|section| {
            section
                .tag("span")
                .attr("class", "in-band")
                .find()
                .map(|span| span.text())
        });
    assert_eq!(result, Some("Crate soup".to_string()));
    Ok(())
}

货物档案

[package]
name = "testquestion"
version = "0.1.0"
authors = ["wangyiran"]
edition = "2018"

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

错误:

error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try`
   --> src\main.rs:6:16
   | 6 |     let resp = reqwest::get("https://docs.rs/soup/0.1.0/soup/")?;
   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `impl std::future::Future`
   |   = help: the trait `std::ops::Try` is not implemented for `impl std::future::Future`
       = note: required by `std::ops::Try::into_result`

error[E0277]: `?` couldn't convert the error to `std::boxed::Box<std::fmt::Error>`
   --> src\main.rs:7:39
   | 7 |    let soup = Soup::from_reader(resp)?;
   |                                          ^ the trait `std::convert::From<std::io::Error>` is not implemented for `std::boxed::Box<std::fmt::Error>`
   |   = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
       = help: the following implementations were found:
            <std::boxed::Box<(dyn std::error::Error + 'a)> as std::convert::From<E>>
            <std::boxed::Box<(dyn std::error::Error + 'static)> as std::convert::From<&str>>
            <std::boxed::Box<(dyn std::error::Error + 'static)> as std::convert::From<std::borrow::Cow<'a, str>>>
            <std::boxed::Box<(dyn std::error::Error + 'static)> as std::convert::From<std::string::String>>
          and 16 others   = note: required by `std::convert::From::from`

error[E0599]: no method named `tag` found for type `std::rc::Rc<markup5ever::rcdom::Node>` in the current scope
   --> src\main.rs:14:18
    | 14 |                 .tag("span")
    |                       ^^^ method not found in `std::rc::Rc<markup5ever::rcdom::Node>`
    |   = help: items from traits can only be used if the trait is in scope 
        = help: the following trait is implemented but not in scope, perhaps add a `use` for it:
    | 1  | use soup::handle_ext::HandleExt;
    |

共有1个答案

韩弘方
2023-03-14

该示例使用 reqwest-0.9(检查的清单),默认情况下,后者又使用较旧的阻止接口。

您使用的是reqwest-0.10,默认情况下使用异步接口。这就是为什么在reqwest::get(…)中得到一个未来,这实际上并不意味着尝试

在依赖项中使用 reqwest-0.9,使用 reqwest::blocking::get()request::get(...)。等待?与所有的异步钟声和口哨声。

 类似资料:
  • 我无法编译我的基本Rust程序: 我在编译时得到这个错误: 如果我进行显式类型转换,它会工作,但我不确定这是否正确: 在这种情况下,访问数组元素的正确方法是什么? 关于GitHub、Reddit的相关讨论: https://www.reddit.com/r/rust/comments/2tpefm/unable_to_access_array_elements/ https://github.co

  • OPS

    OPS(Orbeon PresentationServer)是一个开源的基于J2EE平台且是以XML为中心的Web框架.OPS是围绕XHTML, XForms,XSLT,XML pipelines,与Web Services进行构建的.可以利用OPS来开发检索,处理,表达XML数据的应用程序.不像其它流行Web框架如Struts或WebWork,它们都是基于Java对象与JSP的,OPS是基于XM

  • 概述 本文档说明如何安装一个可用于生产的 MongoDB Ops Manager, 以及如何通过 Ops Manager 监控和警告的功能对一个 MongoDB 分片集群进行管理。具体内容包括: MongoDB Ops Manager 4.1 安装 基本监控报警展示 HTTPS 配置 备份和 恢复 本部分操作可以在 AWS Linux 或 RHEL 7 上进行。如果所有操作在 AWS 上,所使用到

  • Ops CLI From version 2.0 onward, ops-cli requires Python3. If you're still using Python2, use ops-cli version <2.0 ops-cli is a python wrapper for Terraform, Ansible and SSH for cloud automation. We u

  • 我有一个这样的提供程序设置: 我正在尝试使用actix web中的内置方法,将 或类似的东西。 但是,我反而收到以下错误: 有人能帮我弄清楚怎么解决这个问题吗?我对std::marker::size做了一些研究,但我不知道如何使用它来解决这个问题。

  • 我是XSD新手,不知道为什么我的XSD没有进行验证。我收到以下错误: s4s-elt-无效-内容.1:“参数信息”的内容无效。元素“复杂类型”无效、放错位置或出现过于频繁。 cvc复合型。2.4。d: 发现以元素“exception”开头的无效内容。此时不需要任何子元素。 XML: XSD: 我错过了什么吗?我想通过使用复杂类型并引用它们来分解它,从而使其更容易...