【问题标题】:Can I have an anonymous function that isn't typed as a closure in Rust?我可以有一个匿名函数,它不是在 Rust 中作为闭包输入的吗?
【发布时间】:2016-02-14 05:37:47
【问题描述】:

我使用的是 1.6.0(稳定版),但任何未来/夜间启用此功能或我可以观看/跟踪的功能也很酷。

理论上我想要什么(为简洁起见):

let a:fn(&lib_plotMote::mask::Mask) -> bool = {fn(_)->true};

我得到的最接近的:

let a:fn(&lib_plotMote::mask::Mask) -> bool = { fn anon(_:&Mask)->bool{true}; anon };

【问题讨论】:

    标签: function lambda closures rust anonymous-function


    【解决方案1】:

    没有。

    闭包 Rust 的“匿名函数”特性。

    也就是说,你可以稍微减少你所拥有的冗余:

    let a: fn(_) -> _ = { fn anon(_: &Mask) -> bool { true }; anon };
    

    【讨论】:

    • 这太糟糕了,因为不关闭任何东西的函数具有命名类型并且可以在集合中使用,而闭包由于明显的原因不能。
    • @CamdenNarzt 您是否正在尝试创建具有不同类型的函数集合?也许如果你对你的场景进行一些扩展,可能会有一个替代方案
    • 嗯,我正试图决定如何处理另一个不相关代码部分中具有不同类型的函数集合,但在这种情况下,我试图从循环中提升一个分支。
    • > 闭包 -are_ Rust 的“匿名函数”特性。不要忘记函数指针,这就是它。这些不是闭包,它们是函数指针。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2022-01-16
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多