首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

铁锈 1.100

摘要

Nov. 12, 2026 · The Rust Release Team The Rust team is happy to announce a new version of Rust, 1.100.0. Rust is a programming language empowering everyone to build reliable and efficient software. If...

the type you never Rust and any rustup return 100
2026-11-13 1 阅读 约6分钟阅读 mbStavola
分享:
字号:
2026 年 11 月 12 日 · Rust 发布团队 Rust 团队很高兴地宣布推出 Rust 的新版本 1.100.0。 Rust 是一种编程语言,使每个人都能够构建可靠且高效的软件。如果您通过 rustup 安装了以前版本的 Rust,则可以通过以下方式获取 1.100.0: $ rustup update stable 如果您还没有,可以从我们网站上的相应页面获取 rustup,并查看 1.100.0 的详细发行说明。如果您想通过测试未来的版本来帮助我们,您可以考虑在本地更新以使用 beta 通道 ( rustup default beta ) 或 nightly 通道 ( rustup default nightly )。请报告您可能遇到的任何错误! 1.100.0 stable 中有什么 Never type 经过 10 年和 5 次失败的稳定尝试,never 类型终于稳定了!这也完成了这项工作的项目目标。从来没有打字,拼写!在代码中,是规范的无人居住类型。它代表发散计算的类型——永远不会解析为任何值的计算——其中后面的任何代码都是无法访问的。终止控制流的表达式(例如 return 、 break 和 std::process::exit )也具有 ! 类型。 。由于拥有 never 类型的值是不可能的,Rust 允许 never 到 any 强制转换,允许转变!进入任何其他类型(这就是它与任何其他无人居住类型的区别)。例如,这可以用于不从匹配或 if 的分支之一返回值: fn mrrrow ( option : Option < u32 > ) { let value = match option { // `x` 具有类型 `u32` Some ( x ) => x , // `return` 具有类型 `!`,然后将其强制为 `u32`, // 允许 `match` 通过类型检查。无 => 返回 , } ; // ... } 虽然 never 类型已经可以以这种方式使用和观察,甚至可以在函数的返回类型中命名 ( -> ! ),但此版本允许在任何地方命名 never 类型: fn infallible_unwrap < T > ( res : Result < T , ! > ) -> T { // ^^ 在 let Ok ( v ) = res 之前不允许写入 `Result<_, !>` ;此外,此版本将 Infallible 更改为 never 类型的别名。这使得所有使用 Infallible 的旧 API 都可以与使用 ! 。这是自从引入 Infallible 以来的计划,也是 never 类型稳定化如此困难的原因之一(waffle 谈到了稳定化的一些麻烦)。不幸的是,为了允许更改 Infallible ,我们必须引入一个重大更改。此版本将“从不输入后备”从 () 更改为 !在 2024 年之前的版本(即 2015 年、2018 年和 2021 年)中,与 2024 年版本中已完成的操作类似。这在很大程度上应该是不易察觉的,但在某些罕见的情况下可能会影响代码(例如,当忽略返回泛型参数的函数的结果时)。请注意,此更改还可能使编译器检测到更多代码无法访问。我们试图通过提前提供未来兼容性警告并发布对此破坏的公共包的修复来尽可能地减少这一重大变化的影响。如果依赖项由于 never 类型的问题而失败,请考虑更新它,因为可能已经发布了修复程序。 Allocator API 此版本带来了 allocator_api 核心部分的稳定性,使库作者能够定义可与某些标准库类型(目前是 Vec 和 Box)一起使用的自定义分配器。这些是通过新稳定的分配器特征启用的。这是 Allocators 1.0 项目目标的基础。还有很多工作要做,包括扩展可与自定义分配器一起使用的 API 接口,以及稳定它们在更多集合和指针类型上的使用;不过,随着核心特征和设计的发展,预计很快就会看到更多的稳定! DropGuard:在每个退出路径上运行一个闭包 Rust 中的 Drop 特性使得当变量超出范围时可以运行代码,无论我们是否返回 , ? ,或恐慌。 Drop 作为类型的一部分意味着在 Rust 中你永远不必关闭套接字。然而,当您只想在函数退出时无条件运行某些代码时,实现 Drop 可能会感觉有点不方便。这就是我们引入 core::mem::DropGuard 的原因:一种新的辅助类型,在删除时运行闭包。 DropGuard 有两个参数:一个变量和一个闭包。它实现了 Deref 和 DerefMut,因此您可以继续正常使用变量。但是当被删除时,它会运行闭包并消耗变量。 DropGuard还实现了一个dismiss方法,该方法从守卫返回变量而不运行析构函数。这使得通过回滚快速实现类似全有或全无事务的 API 成为可能。下面是一个实现解析器的示例,它使用守卫在失败时回滚突变:使用 std::num::ParseIntError ; /// 尝试解析所有`strings`并将它们推入`
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱