Rust 中返回函数的正确语法是什么?

2024-05-04

Rust 中返回函数的正确语法是什么?

以下代码无法编译。

  fn identity<T>(a: T) -> T {
    return a;
  };

  fn right<T>(a: T) -> Fn {
    return identity;
  };

Here () 是一个最小的例子:

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))
}

你需要:

  • 指定签名中的输入参数和输出类型,即Fn(T) -> T.
  • 指定right的返回类型impl的内容trait Fn(T) -> T.

或者,您也可以编写函数指针fn(T) -> T作为返回类型。由于这不是一个特征,因此您不需要impl关键词:

fn right<T>(_a: T) -> fn(T) -> T {
    return identity;
}

Only fn项目和非捕获闭包可以被强制为函数指针,因此,虽然更简单,但这并不在所有情况下都有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 中返回函数的正确语法是什么? 的相关文章

随机推荐