Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Rust中使用“结果”而不是“展开”函数的示例_Rust - Fatal编程技术网

在Rust中使用“结果”而不是“展开”函数的示例

在Rust中使用“结果”而不是“展开”函数的示例,rust,Rust,我在学习Rust时,几乎没有以前的编码经验。我被铁锈烹饪书中的一个简单配方卡住了:发出HTTP GET请求 我正在尝试使用结果类型来捕获错误,而不是使用.unwrap,这与我所读到的远远不理想 代码可以正常工作,但我想学习如何在let mut res=reqwest::get(uri)行上实现Result类型: 我如何才能实现我正在尝试的目标?也许这会有所帮助:我认为现在这样做更有意义,所以如果我要添加新的目标?对于这两行:1)让mut res=reqwest::get(uri).unwrap(

我在学习Rust时,几乎没有以前的编码经验。我被铁锈烹饪书中的一个简单配方卡住了:发出HTTP GET请求

我正在尝试使用
结果
类型来捕获错误,而不是使用
.unwrap
,这与我所读到的远远不理想

代码可以正常工作,但我想学习如何在
let mut res=reqwest::get(uri)
行上实现
Result
类型:


我如何才能实现我正在尝试的目标?

也许这会有所帮助:我认为现在这样做更有意义,所以如果我要添加新的目标?对于这两行:1)让mut res=reqwest::get(uri).unwrap();(移除展开并添加?)2)res.read_至_字符串(&mut body);然后修改了调用函数的地方,使其看起来像let f=get(url);让f=匹配f{Ok(file)=>file,Err(error)=>error,};这是否更符合正确的思路?听起来不错。您可以直接编写
match-get(url){…}
但是,是的,这就是您基本上要做的。如果您愿意,您已经拥有的代码可以很好地工作。你甚至可以。也许这会有帮助:我觉得现在更有意义了,所以如果我要添加?对于这两行:1)让mut res=reqwest::get(uri).unwrap();(移除展开并添加?)2)res.read_至_字符串(&mut body);然后修改了调用函数的地方,使其看起来像let f=get(url);让f=匹配f{Ok(file)=>file,Err(error)=>error,};这是否更符合正确的思路?听起来不错。您可以直接编写
match-get(url){…}
但是,是的,这就是您基本上要做的。如果您愿意,您已经拥有的代码可以很好地工作。你甚至可以。
extern crate reqwest;
use std::error::Error;
use std::io::Read;

fn main() {
    let url = "http://www.somedomain.com";
    println!("Getting source for: {} ", url);
    get(url);
}

fn get(uri: &str) -> Result<(), Box<dyn Error>> {
    let mut res = reqwest::get(uri).unwrap();
    let mut body = String::new();
    res.read_to_string(&mut body);

    println!("Status: {}\n", res.status());
    println!("Headers : \n {:#?}", res.headers());
    println!("Body : \n\n {:#?}", body);

    Ok(())
}
let x = match somecondition {
    Ok() => { /* ....... */ }
    Err() => { /* ....... */ }
};