从 C++ 走向 rust(二):函数与单元测试

函数的代码格式

函数声明有点类似 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));
}


原创不易,如果对您有帮助,请关注、点赞,谢谢支持!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值