Error handling 是我对以下内容的理解;reqwest“;代码正确吗?

Error handling 是我对以下内容的理解;reqwest“;代码正确吗?,error-handling,rust,http-get,reqwest,Error Handling,Rust,Http Get,Reqwest,我一直在玩弄铁锈,遇到了以下代码: fn request(&url) -> Result<(), Box<dyn std::error::Error>> { let mut res = reqwest::get(&url)?; let mut body = String::new(); res.read_to_string(&mut body)?; println!("Status: {}", res.status());

我一直在玩弄铁锈,遇到了以下代码:

fn request(&url) -> Result<(), Box<dyn std::error::Error>> {
  let mut res = reqwest::get(&url)?;
  let mut body = String::new();
  res.read_to_string(&mut body)?;
  println!("Status: {}", res.status());
  println!("Headers:\n{:#?}", res.headers());
  println!("Body:\n{}", body);
  Ok(())
}
定义一个可变变量,用于存储来自
reqwest
cratet的
get
方法的响应对象

  let mut body = String::new();
定义一个可变变量来存储responseText字符串

  res.read_to_string(&mut body)?;
此方法将
responseText
存储在
body
变量中

  println!("Status: {}", res.status());
  println!("Headers:\n{:#?}", res.headers());
  println!("Body:\n{}", body);
打印包含响应状态、标题和正文的三个格式化字符串(带尾随新行)

  Ok(())
通过
结果
处理错误


问题:


  • Result中的空括号是什么意思?你的理解完全正确

  • 结果是一个枚举,它可以是“Ok”或“Err”-如果Ok,那么可能有一些okayness值(结果、响应、数据、输出等);类似地,如果出现错误,那么您可能需要传达一些具体的错误。有了这些,让我们把结果分解一下

    应该这样读:
    结果
    。这两个子类型可以是任何东西,但它们必须是某种东西——不能忽略它

  • 因此,如果
    typeofvalueifok
    必须是某个值,但如果不想返回某个值,则可以返回空值。这就是结果中的
    ()
    。它只是有效地说“当一切顺利时,我什么也不回报”

  • 因此,第二部分
    TypeOfErrorWhenNotOkay
    也可以是任何类型-一个字符串,一个int,等等。它有助于该类型实现
    std::error::error
    trait,帮助调用者标准化一点

    返回“某个动态对象,但它实现了trait
    std::error::error
    ”,如果要在调用方堆栈上返回该值,则需要Rust知道该值的确切大小(需要调整调用方堆栈的大小以接受该值)

    这就是
    类型出现的地方-它将实际值推送到堆上,并持有指向它的指针(无论堆上的实际值如何,指针的大小都可以是可预测的固定值)。
    是一种保证,无论装箱值是什么,它都实现了错误特性

  • 所以现在最后的
    Ok(())
    是有意义的。如果读取
    Ok(value)
    :它表示结果枚举是变量
    Ok
    ,值为“empty tuple”
    ()
    ,即无


  • 你的理解完全正确

  • 结果是一个枚举,它可以是“Ok”或“Err”-如果Ok,那么可能有一些okayness值(结果、响应、数据、输出等);类似地,如果出现错误,那么您可能需要传达一些具体的错误。有了这些,让我们把结果分解一下

    应该这样读:
    结果
    。这两个子类型可以是任何东西,但它们必须是某种东西——不能忽略它

  • 因此,如果
    typeofvalueifok
    必须是某个值,但如果不想返回某个值,则可以返回空值。这就是结果中的
    ()
    。它只是有效地说“当一切顺利时,我什么也不回报”

  • 因此,第二部分
    TypeOfErrorWhenNotOkay
    也可以是任何类型-一个字符串,一个int,等等。它有助于该类型实现
    std::error::error
    trait,帮助调用者标准化一点

    返回“某个动态对象,但它实现了trait
    std::error::error
    ”,如果要在调用方堆栈上返回该值,则需要Rust知道该值的确切大小(需要调整调用方堆栈的大小以接受该值)

    这就是
    类型出现的地方-它将实际值推送到堆上,并持有指向它的指针(无论堆上的实际值如何,指针的大小都可以是可预测的固定值)。
    是一种保证,无论装箱值是什么,它都实现了错误特性

  • 所以现在最后的
    Ok(())
    是有意义的。如果读取
    Ok(value)
    :它表示结果枚举是变量
    Ok
    ,值为“empty tuple”
    ()
    ,即无


  • ()是单位类型和单位值。长方体是特征对象。有关键字搜索可能会有帮助。()是单位类型和单位值。长方体是特征对象。也许搜索关键词会有帮助。谢谢你花时间回答我的问题,我很感激。另外,欢迎来到StackOverflow!谢谢你花时间回答我的问题,我很感激。另外,欢迎来到StackOverflow!
      println!("Status: {}", res.status());
      println!("Headers:\n{:#?}", res.headers());
      println!("Body:\n{}", body);
    
      Ok(())