MST

星途 面试题库

面试题:Rust中函数指针的类型约束基础

在Rust中,定义一个接受函数指针作为参数的函数,该函数指针的参数为两个i32类型值,返回值为i32。同时,在这个函数内部调用传入的函数指针,并返回其结果。请写出具体代码,并解释函数指针参数的类型声明是如何体现类型约束的。
42.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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 编译器能够在编译期进行严格的类型检查,确保代码的类型安全性。