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

史密斯K

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

以下代码无法编译,谢谢。

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

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

这里(游乐场)是一个最小的示例:

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可体现特征 Fn(T) -> T

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

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

只能将fn项目和非捕获的闭包强制转换为函数指针,因此,尽管更简单,但这并非在所有情况下均有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从函数返回函数的目的是什么?

来自分类Dev

返回函数*(){...}是什么意思?

来自分类Dev

在此特定的javascript代码中返回函数的意义是什么?

来自分类Dev

正确的函数回调语法是什么?

来自分类Dev

返回函数指针语法的函数

来自分类Dev

函数返回函数的特殊语法

来自分类Dev

无法正确键入函数返回函数

来自分类Dev

在Python中,何时/为什么要返回函数?

来自分类Dev

方案中的返回函数

来自分类Dev

在Haskell中返回函数

来自分类Dev

Php如何正确使用返回函数?

来自分类Dev

返回函数什么都不返回

来自分类Dev

将函数定义为返回函数的IIFE的目的是什么?

来自分类Dev

Rust的C函数参数语法的目的是什么?

来自分类Dev

在Rust中为线程或函数创建超时的正确方法是什么?

来自分类Dev

在返回函数中返回间隔的结尾?

来自分类Dev

在R中返回函数的函数

来自分类Dev

返回函数的函数(在python中)

来自分类Dev

在包含属性的函数中返回函数

来自分类Dev

在javascript中返回函数的函数

来自分类Dev

为什么typeof String返回函数

来自分类Dev

为什么以SCALAR返回函数的引用

来自分类Dev

在C ++中返回函子的正确方法

来自分类Dev

条件函数什么也不返回,语法正确吗?的iOS

来自分类Dev

在C#中调用此C函数的正确语法是什么?该函数使用指针和数组

来自分类Dev

返回函数的函数,返回函数等

来自分类Dev

此Rust函数返回的迭代器类型是什么?

来自分类Dev

select的正确语法是什么?

来自分类Dev

LIKE的正确语法是什么?