0

私はRustをいじっていて、次のコードに出くわしました:

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(())
}

私の理解では、次のとおりです。

fn request(&url) -> Result<(), Box<dyn std::error::Error>> {

単一の (借用された) パラメーターを持ち、Resultエラーの処理に使用する関数を定義します。

  let mut res = reqwest::get(&url)?;

reqwestクレートのgetメソッドからの応答オブジェクトを格納する可変変数を定義します。

  let mut body = String::new();

responseText 文字列を格納する可変変数を定義します。

  res.read_to_string(&mut body)?;

このメソッドresponseTextbody変数に を格納します。

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

応答ステータス、ヘッダー、および本文を含む 3 つの書式設定された文字列 (末尾に改行あり) を出力します。

  Ok(())

Result..?経由でエラーを処理します。


質問:

  1. 中の空の括弧は何Result<()OK(())意味していますか?
  2. とはBox<dyn std::error::Error>?
4

1 に答える 1