gpt4 book ai didi

rust - |x| 的类型是什么移动|y| x+y?

转载 作者:行者123 更新时间:2023-12-02 15:57:33 25 4
gpt4 key购买 nike

什么是类型

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;

Playground .

或者你可以装箱:

type Plus = fn(isize) -> Box<dyn Fn(isize) -> isize>;
let plus: Plus = |x| Box::new(move |y| x + y);

Playground .

关于rust - |x| 的类型是什么移动|y| x+y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71214830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com