ot;;
match color {
"red" => println!("it's red"),
"green" => println!("it's green"),
_ => println!("it's something else"),
}
你是不是很难猜出下面这个函数是干什么用的?
但如果在函数的参数上使用模式匹配,那么事情就会变得不一样:
pub struct Fubarize(pub bool);
pub struct Frobnify(pub bool);
pub struct Bazificate(pub bool);
fn my_func(Fubarize(fub): Fubarize,
Frobnify(frob): Frobnify,
Bazificate(baz): Bazificate) {
if fub {
...;
}
if frob && baz {
...;
}
}
...
my_func(Fubarize(true), Frobnify(false), Bazificate(true));
在Rust里,不再只是简单地返回一个布尔值表示出错与否,也不再简单粗暴地忽略错误,也不再通过非本地跳转来处理异常。
在创建新类型时(比如创建一个包含大量字段的struct),可以使用#[derive(Debug)],Rust会自动打印该类型的内容用于调试,不需要再手动编写函数去获取类型的信息。
不再需要使用函数指针了。
在多线程环境里,Rust的并发控制机制可以防止出现数据竟态条件。我想,对于那些经常写多线程并发代码的人来说,这会是个好消息。
C语言是一门古老的语言,用它来编写单处理器的Unix内核或许是个不错的选择,但对于现今的软件来说,它算不上好语言。
Rust有一定的学习曲线,但我觉得完全值得一学。它之所以不好学,是因为它要求开发者对??己所写的代码必须有充分的了解。我想,Rust是一门这样的语言:它可以让你变成更好的开发者,而且它会成为你解决问题的利器。
查看英文原文:Rust things I miss in C