私はget_url_content
の機能を持っており、エラーについては気にしません(これは単なるテストです)。 Option<String>
を返します。入れ子になっているのは慣用錆の悪い練習にマッチしますか?
extern crate hyper;
use std::io::Read;
use hyper::client::Client;
fn get_url_content(url: &str) -> Option<String> {
let client = Client::new();
let mut s = String::new();
match client.get(url).send() {
Ok(mut res) => {
match res.read_to_string(&mut s) {
Ok(_) => {
Some(s)
},
Err(_) => {
None
}
}
},
Err(_) => {
None
}
}
}
この機能はうまくいきますが、読みにくいことがわかりました。この種のケースについて、より読みやすくするためのベストプラクティスがあると思います。ネストされたマッチはJSのコールバック地獄のような悪い習慣であるかどうか、もしあればそれを避ける方法はありますか?
と結果をドロップ示唆
として恐らく少しクリーナーを表すことができます。 '.map(| mut res | 's'が変更可能に借用され、同じ式で返されるため、res.read_to_string(&muts).ok()。map(| _ | s))'が失敗します。 –
それは動作します。 Thxはこのステップのステップ回答で、より良いRustを理解するのに役立ちます。 –
@ChrisEmersonいいえ。出力の有効期間は借用に依存しないためです。 – Veedrac