面试题答案
一键面试fn call_function(func: fn(i32, i32) -> i32, a: i32, b: i32) -> i32 {
func(a, b)
}
类型约束解释
- 在函数
call_function
的定义中,其第一个参数func
的类型声明为fn(i32, i32) -> i32
。这明确指定了传入的函数指针必须满足以下约束:- 参数类型:该函数指针接受两个
i32
类型的参数。这确保了在调用call_function
时传入的函数指针,其参数列表与声明的完全一致。如果传入的函数参数类型不是i32
,编译器会报错。 - 返回值类型:该函数指针必须返回一个
i32
类型的值。这保证了在call_function
内部调用func
后,可以按照预期的类型来处理返回值。若返回值类型不匹配,同样会导致编译错误。通过这样的类型声明,Rust 编译器能够在编译期进行严格的类型检查,确保代码的类型安全性。
- 参数类型:该函数指针接受两个