导读 | Rust 团队很高兴地宣布 Rust 的新版本 1.73.0。Rust 是一种编程语言,它让每个人都能构建可靠、高效的软件。 |
如果你已经通过 rustup 安装了之前的 Rust 版本,你可以通过以下方式获得 1.73.0:
rustup update stable
如果还没有,可以从我们网站的相应页面获取 rustup,并在 GitHub 上查看 1.73.0 的详细发布说明。
如果你想帮助我们测试未来的版本,可以考虑在本地更新,使用 beta 频道(rustup 默认 beta 频道)或 nightly 频道(rustup 默认 nightly 频道)。请报告您可能遇到的任何 bug!
默认紧急处理程序的输出已更改为将紧急信息放在单独一行,而不是用引号封装。如本例所示,这将使panic信息更容易阅读:
fn main() { let file = "ferris.txt"; panic!("oh no! {file:?} not found!"); }
从 Rust 1.73 开始输出:
thread 'main' panicked at 'oh no! "ferris.txt" not found!', src/main.rs:3:5
从 Rust 1.73 开始输出:
thread 'main' panicked at src/main.rs:3:5: oh no! "ferris.txt" not found!
当信息较长、包含嵌套引号或跨多行时,这一点尤其有用。
此外,还修改了 assert_eq 和 assert_ne 产生的恐慌信息,移动了自定义信息(第三个参数)并删除了一些不必要的标点符号,如下所示:
fn main() { assert_eq!("", "", "ferris is not a fish"); }
Rust 1.73 之前的输出:
thread 'main' panicked at 'assertion failed: `(left == right)` left: `""`, right: `""`: ferris is not a fish', src/main.rs:2:5
从 Rust 1.73 开始输出:
thread 'main' panicked at src/main.rs:2:5: assertion `left == right` failed: ferris is not a fish left: "" right: ""
正如 RFC 3184 所建议的,LocalKey
新方法使普通代码更加简洁,并避免了为新线程在 thread_local! 中指定的默认值运行额外的初始化代码。
thread_local! { static THINGS: Cell> = Cell::new(Vec::new()); } fn f() { // before: THINGS.with(|i| i.set(vec![1, 2, 3])); // now: THINGS.set(vec![1, 2, 3]); // ... // before: let v = THINGS.with(|i| i.take()); // now: let v: Vec = THINGS.take(); }
- Unsigned {integer}::div_ceil
- Unsigned {integer}::next_multiple_of
- Unsigned {integer}::checked_next_multiple_of
- std::ffi::FromBytesUntilNulError
- std::os::unix::fs::chown
- std::os::unix::fs::fchown
- std::os::unix::fs::lchown
- LocalKey::
>::get | - LocalKey::
>::set | - LocalKey::
>::take | - LocalKey::
>::replace | - LocalKey::
>::with_borrow - LocalKey::
>::with_borrow_mut - LocalKey::
>::set - LocalKey::
>::take - LocalKey::
>::replace
现在,这些应用程序接口在各种情况下都很稳定:
- rc::Weak::new
- sync::Weak::new
- NonNull::as_ref
原文来自:
本文地址://gulass.cn/rust-1-73.html编辑:王浩,审核员:清蒸github
Linux大全:
Linux系统大全: