You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Rust新手求助:使用reqwest发起GET请求的代码无法运行

Rust新手求助:使用reqwest发起GET请求的代码无法运行

嘿,刚瞅了你的代码,问题其实都是新手常踩的小坑,我来给你捋捋~

首先,你的代码里用了?运算符来处理错误,但默认情况下Rust的main函数返回的是()(空类型),而?只能在返回Result类型的函数里用,这是第一个核心问题。

然后,你用了reqwest的阻塞客户端(reqwest::blocking),但如果Cargo.toml里没开启对应的特性,编译肯定会报错,这是第二个容易忽略的点。

给你修正后的可运行代码:

use reqwest;
use std::io::Read;

// 把main函数的返回类型改成Result,这样就能用?处理错误了
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut res = reqwest::blocking::get("https://myip.wtf/text")?;
    let mut body = String::new();
    res.read_to_string(&mut body)?;

    println!("{}", body);
    Ok(()) // 最后要返回Ok(()),符合Result的返回要求
}

另外,别忘了在你的Cargo.toml里正确配置reqwest的依赖,必须加上blocking特性:

[dependencies]
reqwest = { version = "0.11", features = ["blocking"] }

再给你唠唠为啥要改这些:

  • 把main改成返回Result<(), Box<dyn std::error::Error>>,相当于告诉Rust这个函数可能会出错,?运算符就能自动把错误往上抛,不用手动写一堆match处理,新手用起来特别省心。
  • 开启blocking特性是因为reqwest默认只启用异步客户端,阻塞客户端是可选特性,必须显式开启才能用reqwest::blocking模块。

你按这个改完,运行cargo run应该就能正常拿到返回的IP内容啦~

内容来源于stack exchange

火山引擎 最新活动