什么是类型
let plus:Plus = |x| move |y| x + y;
显然,
type Plus = fn(isize) -> fn(isize) -> isize;
不会工作,因为最后一部分不是函数指针而是闭包。
最佳答案
类型是impl Fn(isize) -> (impl Fn(isize) -> isize)
。它可以被强制为 fn(isize) -> (impl Fn(isize) -> isize)
,因为外部闭包不捕获。
但是,您无法在今天的 Rust 中表达这种类型。使用夜间功能 type_alias_impl_trait
,您可以将其分为两种类型:
#![feature(type_alias_impl_trait)]
type Adder = impl Fn(isize) -> isize;
type Plus = fn(isize) -> Adder;
let plus: Plus = |x| move |y| x + y;
或者你可以装箱:
type Plus = fn(isize) -> Box<dyn Fn(isize) -> isize>;
let plus: Plus = |x| Box::new(move |y| x + y);
关于rust - |x| 的类型是什么移动|y| x+y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71214830/