演習 - Option 型を使用して値がない場合に対処する
この演習では、Person
構造体を受け取り、その人のフル ネームを含む String
を返す関数の実装を完了します。
ミドル ネームがない人もいること、ただしある場合は戻り値に含める必要があることに注意してください。
編集する必要があるのは build_full_name
関数だけです。 姓と名を処理する部分は既に実装済みです。
struct Person {
first: String,
middle: Option<String>,
last: String,
}
fn build_full_name(person: &Person) -> String {
let mut full_name = String::new();
full_name.push_str(&person.first);
full_name.push_str(" ");
// TODO: Implement the part of this function that handles the person's middle name.
full_name.push_str(&person.last);
full_name
}
fn main() {
let john = Person {
first: String::from("James"),
middle: Some(String::from("Oliver")),
last: String::from("Smith"),
};
assert_eq!(build_full_name(&john), "James Oliver Smith");
let alice = Person {
first: String::from("Alice"),
middle: None,
last: String::from("Stevens"),
};
assert_eq!(build_full_name(&alice), "Alice Stevens");
let bob = Person {
first: String::from("Robert"),
middle: Some(String::from("Murdock")),
last: String::from("Jones"),
};
assert_eq!(build_full_name(&bob), "Robert Murdock Jones");
}
上記のコードを実行し、すべての assert_eq!
式がパニックにならずにパスすることを確認します。 Rust Playground でコードを編集することもできます。
この演習の解答は、こちらから入手できます。