作者:小木马 | 来源:互联网 | 2023-05-24 23:58
为了测试目的,你如何将函数(或函数指针)粘贴到数组中?
fn foo() -> isize { 1 }
fn bar() -> isize { 2 }
fn main() {
let functiOns= vec![foo, bar];
println!("foo() = {}, bar() = {}", functions[0](), functions[1]());
}
这个代码在Rust操场上
这是我得到的错误代码:
error: mismatched types:
expected `fn() -> isize {foo}`,
found `fn() -> isize {bar}`
(expected fn item,
found a different fn item) [E0308]
let functiOns= vec![foo, bar];
^~~
Rust将我的函数(值)视为不同类型,尽管具有相同的签名,我觉得这很令人惊讶.
1> DK...:
在最近的某个时刻,由于......我不记得的原因,每个功能都有自己独特的类型.Upshot是你需要给编译器一个提示(注意类型functions
):
fn foo() -> isize {
1
}
fn bar() -> isize {
2
}
fn main() {
let functions: Vec isize> = vec![foo, bar];
println!("foo() = {}, bar() = {}", functions[0](), functions[1]());
}
你也可以这样做:
let functiOns= vec![foo as fn() -> isize, bar];