普通函数
我们在基本数据类型谈到了fn类型,这是一种指向函数的指针类型。在这篇我们会深入学习函数。
函数是某种可复用逻辑的代码实现。
函数通常有如下几部分组成。
一个典型的函数声明如下:
fn is_ok(key: u32) -> bool {
true
}
函数名
在上述实例中,fn为关键字,用来声明一个函数,is_ok为函数名,我们可以通过函数名使用函数,也可以使用fn类型的变量来调用函数。函数同样具有类型,函数的类型有函数的参数和返回值来决定。
函数参数
函数参数最重要的信息有两点:
- 函数参数的个数
-
函数返回值
要记住一点,不只函数有返回值,rust中任何一个语句都有返回值。
函数的参数和返回值决定了函数的类型。特殊
方法
rust中方法有两种,一种是impl方法,一种是trait方法。方法通常有一个隐藏的参数(实现类型的值)或者是特殊的作用域。
闭包
闭包是一种能捕获环境变量的特殊函数,它通过||来声明。
它通过三种trait来说明闭包对环境变量的使用。 Fn 对环境变量的共享引用
- FnMut 对环境变量的可变引用
- FnOnce 对环境变量的所有权转移。
这里需要注意的是FnOnce,因为它所持有的环境变量所有权已转移,所以只能调用一次。
注意||内部的参数不是环境变量,而是闭包的参数。
注意||同样{}包裹,有着自身的作用域,只是大多数{}可省略。
一个典型的闭包如下:
let y = |x|{
x*x
};