你如何将函数(或函数指针)放入数组中以进行测试?
fn foo() -> isize { 1 }
fn bar() -> isize { 2 }
fn main() {
let functions = vec![foo, bar];
println!("foo() = {}, bar() = {}", functions[0](), functions[1]());
}
这段代码位于Rust playground(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将我的函数(值)视为不同的类型,尽管它们具有相同的签名,这让我感到惊讶。
vec![]
的限制(实际上,这是使用box [...]
时的问题)。您可以轻松地创建一个函数指针的数组或切片:let arr = [foo, bar]
。 - Lukas Kalbertodt