我对rust还是很陌生,我想编写一个脚本来抓取页面,并从页面中提取所有带有标题的链接。我什至没有发出get请求。 :(
fn main() {
println!("Started!");
let body = reqwest::get("https://news.ycombinator.com")
.await?
.text()
.await?;
println!("body = {:?}", body);
}
我显然没有返回任何内容,但是我对语法感到困惑,有人可以解释吗?操作员,也可以帮助我解决此问题。
答案 0 :(得分: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);
}