无法在返回`()`的函数中使用`?`运算符[重复]

问题描述 投票:0回答:1

我对生锈还是很陌生,我想编写一个脚本来刮取页面并从页面中拉出所有带有标题的链接。我什至没有发出get请求。 :(

fn main() {
    println!("Started!");
    let body = reqwest::get("https://news.ycombinator.com")
    .await?
    .text()
    .await?;

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

我显然没有返回任何内容,但是我对语法感到困惑,有人可以解释吗?操作员,也可以帮助我解决此问题。

rust reqwest
1个回答
2
投票

问号运算符只能在返回std::Result的函数中使用。粗略地说,您可以认为x?的含义

match x {
    Err(e) => return Err(e),
    Ok(y) => y,
}

(请参阅文档here

await产生错误结果时您想做什么?如果您不希望发生这种情况,那么可以安全地告诉Rust发生恐慌(即崩溃)。这是Result::unwrap的用途:

fn main() {
    println!("Started!");
    let body = reqwest::get("https://news.ycombinator.com")
        .await
        .unwrap()
        .text()
        .await
        .unwrap();

    println!("body = {:?}", body);
}
© www.soinside.com 2019 - 2024. All rights reserved.