gpt4 book ai didi

rust - 如何使结构接受类型 `impl std::ops::Fn<()>` 作为其字段?

转载 作者:行者123 更新时间:2023-11-29 08:29:26 25 4
gpt4 key购买 nike

在 Rust 1.26 中,一个名为 impl Trait 的新特性得到了稳定,它使函数能够返回一个未装箱的闭包。但是如何为未装箱的闭包定义结构字段的类型,下面的代码无法编译:

fn return_closure() -> impl Fn() -> () {
move || {
println!("abc");
}
}

struct HoldClosure {
closure: impl Fn() -> ()
}

fn main() {
let hold_my_closure = HoldClosure {
closure: return_closure()
};
}

最佳答案

只需使用泛型类型参数。

fn return_closure() -> impl Fn() {
move || {
println!("abc");
}
}

struct HoldClosure<F: Fn()> {
closure: F,
}

fn main() {
let hold_my_closure = HoldClosure {
closure: return_closure()
};

(hold_my_closure.closure)();
}

关于rust - 如何使结构接受类型 `impl std::ops::Fn<()>` 作为其字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52902143/

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