私は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)?;
このメソッドresponseText
はbody
変数に を格納します。
println!("Status: {}", res.status());
println!("Headers:\n{:#?}", res.headers());
println!("Body:\n{}", body);
応答ステータス、ヘッダー、および本文を含む 3 つの書式設定された文字列 (末尾に改行あり) を出力します。
Ok(())
Result
..?経由でエラーを処理します。
質問:
- 中の空の括弧は何
Result<()
をOK(())
意味していますか? - とは
Box<dyn std::error::Error>
?