在 2024 年 9 月 5 日,Rust 团队又发布 Rust 1.81.0 新版本了,发布速度扛扛的,该版本都有哪些变化呢。
对于喜欢尝新的伙伴,可以体验到更多的创新和改进了。
老规则,如果你渴望尝试最新版本的 Rust,只需通过 rustup 工具即可轻松升级。
rustup update stable
新的 1.81.0 稳定版包含哪些内容呢!
在 1.81.0 版本中,稳定了 Error 中的特征 core ,现在允许在库中使用该特征 #![no_std],这意味着即使在不使用标准库的情况下,开发者也可以使用标准的错误处理机制。
例如:
use core::fmt;#[derive(Debug)]pub struct SimpleError;impl fmt::Display for SimpleError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "A simple error occurred") }}impl core::error::Error for SimpleError {}fn divide(a: i32, b: i32) -> Result<i32, SimpleError> { if b == 0 { Err(SimpleError) } else { Ok(a / b) }}fn main() { match divide(10, 2) { Ok(result) => println!("10 / 2 = {}", result), Err(_) => println!("Error: division by zero"), } match divide(10, 0) { Ok(result) => println!("10 / 0 = {}", result), Err(e) => println!("Error: {}", e), }}
在 Rust 1.81.0 中,标准库中的排序实现进行了更新,主要是以提高运行时性能和编译时间,此外,该新的排序算法还会检测无效的排序实现并引发的Panic,而不是返回随机排序的结果。
也就是实现了一个不符合排序规则的自定义排序(如违反 PartialOrd 或 Ord 的要求),Rust 不会返回一个错误的排序结果,而是通过触发 Panic 来提醒你修复排序逻辑,提高了代码的健壮性。
Rust 与 C 互操作中,在之前的 Rust 版本中,如果在 extern "C" 函数中发生了 panic,可能会尝试进行堆栈展开(stack unwinding),这在 C 语言环境下是不安全的。
然后,到了 Rust 1.81.0 版本,如果你未捕获的 panic 发生,程序会直接中止,防止潜在的不安全行为。要处理这种堆栈展开的情况,提供了 "C-unwind" ABI,它允许在安全处理 panic 时跨越 Rust 和 C 的边界,这样就能解决长期存在的健全性问题。
本文链接:http://www.28at.com/showinfo-26-112711-0.htmlRust 又发布新的 1.81.0 版本了!速度真快
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 通过 12 个示例探索 Python 列表与索引的奥秘
下一篇: 面试官:如何实现线程池任务编排?