Smo*_*Ken 15 return function rust
Rust 中返回函数的正确语法是什么?
以下代码无法编译。
fn identity<T>(a: T) -> T {
return a;
};
fn right<T>(a: T) -> Fn {
return identity;
};
Run Code Online (Sandbox Code Playgroud)
Mat*_*haq 12
这里(playground)是一个最小的例子:
fn identity<T>(a: T) -> T {
return a;
}
fn right<T>(_a: T) -> impl Fn(T) -> T {
return identity;
}
fn main() {
println!("{}", right(0)(42))
}
Run Code Online (Sandbox Code Playgroud)
你需要:
Fn(T) -> T
。right
的返回impl
类型。 Fn(T) -> T
或者,您也可以将函数指针编写fn(T) -> T
为返回类型。由于这不是一个特征,因此您不需要关键字impl
:
fn right<T>(_a: T) -> fn(T) -> T {
return identity;
}
Run Code Online (Sandbox Code Playgroud)
只有fn
项目和非捕获闭包可以被强制为函数指针,因此,虽然更简单,但这并不在所有情况下都有效。