Rust 1.45.0 已发布。此版本有两个值得关注的变化:一是修复将大浮点数转换为小整数时出现的 undefined behavior 问题,官方将这种情况称为 unsoundness;二是在 expression, patterns 和 statement 中使用函数式过程宏 (procedural macros)的功能已处于稳定阶段。

修复浮点数转换为整数时的 unsoundness
对于此问题,官方的解决方案是为 as 关键字执行 "saturating cast"。下面的例子解释了什么叫 saturating cast。

上面的代码打印出

或者使用采用 unsafe 方式的新 API 进行转换:

稳定在 expression, patterns 和 statement 中使用函数式过程宏的功能
Rust 1.45.0 在三个新地方增加了调用过程宏的功能:

库变更
在 Rust 1.45.0 中,以下 API 已处于稳定阶段:
Arc::as_ptr
BTreeMap::remove_entry
Rc::as_ptr
rc::Weak::as_ptr
rc::Weak::from_raw
rc::Weak::into_raw
str::strip_prefix
str::strip_suffix
sync::Weak::as_ptr
sync::Weak::from_raw
sync::Weak::into_raw
char::UNICODE_VERSION
Span::resolved_at
Span::located_at
Span::mixed_site
unix::process::CommandExt::arg0
此外还增加了 char with ranges 来迭代代码点 (codepoint):
