函数指针类型
语法
裸函数类型 :
对于生命周期组? 函数类型限定符组fn
(
函数参数可能命名为可变参数?)
裸函数返回类型?函数类型限定符组:
unsafe
? (extern
Abi?)?裸函数返回类型:
->
无约束类型组函数参数可能命名为可变参数 :
可能命名函数参数组 | 可能命名函数参数可变可能命名函数参数组 :
可能命名函数参数 (,
可能命名函数参数 )*,
?可能命名函数参数 :
外围属性* ( ( 标识符 |_
):
)? 类型可能命名函数参数可变 :
( 可能命名函数参数,
)* 可能命名函数参数,
外围属性*...
函数指针类型,用 fn
关键字表示,用来引用一个函数,该函数的ID不一定在编译时已知。
可以通过 函数条目 和无捕获的 闭包 进行强制转换来创建。
unsafe
修饰符表示该类型的值是一个 非安全的函数 ,而 extern
修饰符表示 外部函数 。
可变参数只能在使用了 "C"
或 "cdecl"
调用约定的 extern
函数类型中指定。
下面是一个例子,其中 Binop
被定义为函数指针类型:
#![allow(unused)] fn main() { fn add(x: i32, y: i32) -> i32 { x + y } let mut x = add(5,7); type Binop = fn(i32, i32) -> i32; let bo: Binop = add; x = bo(5,7); }
函数指针参数上的属性
函数指针参数上的属性遵循与 常规函数参数 相同的规则和限制。