You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.4 KiB

// 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())
);
}
}