函数的代码格式
函数声明有点类似 pascal 语言。这样做的原因是,函数名称和变量的类型,有些时候是允许省略的。如果采用 c 语言的那种反人类的声明方式,程序员就束手无策了。c 语言那套语法怎样改进才能省略变量类型,让编译器自动推断呢?这个神仙也难做到!
fn gcd(m: u64, n: u64) -> u64 {
assert!(m != 0 && n != 0);
if m > n {return gcd(m - n, n)};
if m < n {return gcd(n - m, m)};
m
}
数据类型
另外,rust 中的数据类型的位数是固定的,例如 u32、u64等。c++ 中的 int存储空间大小和操作系统有关,这个对于不同平台下的代码移植副作用很大。
当然,rust 的指针的存储位数仍然是与操作系统相关的。
单元测试
rust 从语法层面提供了单元测试的机制。许多现代语言都提供了单元测试能力,例如 go 语言,也具备很方便的单元测试机制。相比之下 c++ 只能靠程序员自己来实现类似的功能。
编写测试代码很简单,#[test]代码放在要测试的函数之后即可。代码如下:
fn gcd(m: u64, n: u64) -> u64 {
assert!(m != 0 && n != 0);
if m > n {return gcd(m - n, n)};
if m < n {return gcd(n - m, m)};
m
}
#[test] fn test_gcd(){
assert_eq!(gcd(14, 15), 1);
assert_eq!(gcd(2 * 3 * 5 * 11 * 17, 3 * 7 * 11 * 13 * 19), 3 * 11);
}
fn main() {
println!("gcd(12, 8) = {}", gcd(12, 8));
}
原创不易,如果对您有帮助,请关注、点赞,谢谢支持!