Username)类型。它将是非空字符串(String)的包装器:prae::define!(pub Username: String ensure |u| !u.is_empty());
// We can't create an invalid username.
assert!(Username::new("").is_err());
// But we can create a valid one!
let mut u = Username::new("valid name").unwrap();
assert_eq!(u.get(), "valid name");
// We can mutate it:
assert!(u.try_mutate(|u| *u = "new name".to_owned()).is_ok());
assert_eq!(u.get(), "new name"); // our name has changed!
// But we can't make it invalid:
assert!(u.try_mutate(|u| *u = "".to_owned()).is_err());
assert_eq!(u.get(), "new name"); // our name hasn't changed!
// Let's try this...
assert!(Username::new(" ").is_ok()); // looks kind of invalid though :(
let (width, height, scale) = (1024, 1024, 128.0);
let mut model = Model::new(width, height, scale);
let stroke = Color::new(242, 60, 60)?;
let fill_hexagon = Color::new(242, 194, 106)?;
model.add(Shape::new(6, fill_hexagon, stroke)?);
From 日报小组 洋芋
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。