研读Rust圣经解析——Rust learn-11(测试,迭代器,闭包)

测试

测试我不打算很详细的写,大家知道如何使用其实就差不多了

编写测试模块

一般来说我们在lib中编写测试

cargo new test_01 --lib

这样我们构建了一个test的lib
在这个工程里面你看到应该是有个lib.rs没有main.rs的
在这里插入图片描述

声明test模块

这里并不是声明一个mod,而是一个测试区域,在区域中可以写很多的测试方法

我们通过#[cfg(test)]宏来进行标注

#[cfg(test)]
mod tests {
   
  
}

编写测试方法

测试方法和普通方法没什么区别,主要在于标注#[test]

 #[test]
    fn test01() {
   
        assert_eq!(6, 4);
    }

执行测试

我们使用cargo test就可以启动进行测试了,测试会将所有标注#[test]的方法都测试一遍

测试结果检查

我们通常使用assert检查测试结果

  1. assert:断言结果为true,否则panic
  2. assert_eq:断言两边相等,否则panic
  3. assert_ne:断言两边不等,否则panic

闭包

一个可以储存在变量里的类似函数的结构

Rust 的 闭包(closures)是可以保存在一个变量中或作为参数传递给其他函数的匿名函数。可以在一个地方创建闭包,然后在不同的上下文中执行闭包运算。不同于函数,闭包允许捕获被定义时所在作用域中的值。我们将展示闭包的这些功能如何复用代码和自定义行为。

定义一个闭包

如下,我们使用||{}定义了一个闭包,很像是函数的写法:

fn main() {
   
    let a = || {
   
        10
    };
    println!("{}",a());
}

这个闭包会返回10,但是实际a的类型是fn:fn->i32,对于但语句来说将{}省略也是OK的

完整写法

|参数|->返回值{
   
	//...
}

闭包可以捕获环境

如下的闭包中使用到了b变量,但是b没有传入闭包,这就和函数有了差别,使得我们在做一些简单的,不用复用的操作的时候可以直接使用闭包而不是定义一个函数

fn main() {
   
    let b = 16;
    let a = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值