// errors1.rs
// 假使你传给这个函数一个空字符串,那么它将拒绝生成一段个性签名(nametage)。
// 如果它能解释拒绝的原因是什么,而不是粗暴返回 `None` 那就更完美了。
// 第 2 个测试目前还没通过并未能编译,但它说明了我们希望这个函数具有的行为。
// 执行 `rustlings hint errors1` 获取提示!

// I AM NOT DONE

pub fn generate_nametag_text(name: String) -> Option<String> {// 译:生成个性签名
    if name.len() > 0 {
        Some(format!("Hi! My name is {}", name))// 译:"嗨!我的名字是 {}"
    } else {
        // 不允许使用空的名字。
        None
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    // 你可以注释掉第 2 个测试,那么这个测试就能初步通过。
    // 当你更改了测试的函数时,也需要修改下测试代码以使测试正确!
    #[test]
    fn generates_nametag_text_for_a_nonempty_name() {// 译:用一个非空名称生成一段个性签名
        assert_eq!(
            generate_nametag_text("Beyoncé".into()),
            Some("Hi! My name is Beyoncé".into())
        );
    }

    #[test]
    fn explains_why_generating_nametag_text_fails() {// 译:说明为什么个性签名生成失败了
        assert_eq!(
            generate_nametag_text("".into()),
            Err("`name` was empty; it must be nonempty.".into())
        );
    }
}