rust - 在 Rust 中,如何将发散函数作为参数传递给另一个函数
问题描述
非发散函数工作正常
fn test(f: &Fn() -> u8) {}
但我不能接受这样的发散功能
fn test_diverging(f: &Fn() -> !) {}
我收到以下错误
error[E0658]: The `!` type is experimental (see issue #35121)
--> examples/two_tasks.rs:44:31
|
44 | fn test_diverging(f: &Fn() -> !) {}
| ^
查看问题#35121,我可以看到如何解决它,但同时有解决方法吗?
解决方案
!
在某些情况下仍然是实验性的,这意味着它在稳定的编译器上不可用(截至今天为 1.33)。您可以在夜间编译器上使用它,但您必须明确选择加入feature(never_type)
:
#![feature(never_type)]
fn test_diverging(f: &Fn() -> !) {}
(操场)
请注意,这意味着该功能在稳定之前可能会发生变化,因此您接受未来编译器版本会破坏您的代码的风险。
也可以看看
- 什么是 crate 属性,我在哪里添加它?
- 什么是稳定过程?
- 如何使用 nightly:是否可以有多个共存的 Rust 安装?
推荐阅读
- tensorflow - 我们可以将所有数据集用于 doc2vec 和 CNN 吗?
- javascript - 使用 csv-parser 节点模块时的意外行为
- amazon-web-services - 在 Cognito 中有一种从特定用户的角度登录的方法
- python - 使用 selenium 登录linkedin
- javascript - net::ERR_ABORTED 404(未找到) - 控制台错误
- javascript - 当 package.json 位于其他位置时,从根目录执行 npm 任务
- azure-devops - 如何在为所有人发布之前测试新的 Azure DevOps 扩展版本
- python - 如何从python中的列表列表中获取唯一的组合值
- c# - 非静态方法需要一个目标;使用实体框架
- presto - 使用 Presto CLI 时如何设置查询超时?