演習 - 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 でコードを編集することもできます。

この演習の解答は、こちらから入手できます。