Rust 团队很高兴宣布 Rust 的新版本 1.26.1。Rust 是一种系统编程语言,专注于安全、速度和并发。
如果您通过 rustup 安装了先前版本的 Rust,获取 Rust 1.26.1 非常简单,只需
$ rustup update stable
如果您还没有,您可以从我们网站上的相应页面获取 rustup
,并查看 GitHub 上的1.26.1 的详细发布说明。
1.26.1 稳定版中的内容
在 1.26.0 中发现了一些问题,这些问题被认为足以进行补丁发布。
更改的简要概述
- RLS 不再干扰命令行构建
- Rustfmt 在某些情况下停止了对文本的糟糕格式化
- 通过
impl Trait
从 main 返回,其中 Trait 不是Termination
,现在不再允许 ::<>
(turbofish) 不再适用于类型为impl Trait
的方法参数NaN > NaN
在常量上下文中不再返回 true- rustup 不应该再因某些平台上缺少文档而失败
如果您的代码继续编译,只有对浮点数比较的更改可能会改变行为。
RLS 不再干扰命令行构建
1.26.0 附带的 RLS 版本使用与命令行中的 Cargo 相同的目标目录,这意味着在两者之间切换会导致所有内容都被重新编译。由于 RLS 或编译器未释放文件系统锁,这个问题对 Windows 用户来说更糟糕,导致错误率增加。后一个错误尚未修复,但随着第一个错误的修复,它发生的频率要低得多。
Rustfmt 格式错误
以前,rustfmt 会过度缩进多行字符串文字,现在已修复。
impl Trait
从 main 返回,当 Trait 不是 Termination 时不再起作用
通过 以前,我们只检查底层类型是否实现了 Termination
特性。现在,只有在稳定版上才能返回具体类型,因为除了 impl Termination
之外,没有任何东西会起作用,但该特性目前不稳定,无法导入。
例如,这在 1.26.1 上将不再起作用
fn main() -> impl Copy {}
但这将继续起作用,因为它不会尝试通过 impl Trait
返回任何隐藏类型,而是具体地命名类型。
fn main() -> Result<(), std::io::Error> {
Ok(())
}
impl Trait
的方法参数
Turbofish 不再适用于使用 以前,我们意外地允许代码指定使用 impl Trait
的方法参数的类型。在 1.26.0 上,下面的代码将起作用,但 turbofish (下面的 ::<u32>
) 如何与 impl Trait
交互尚未确定,因此我们阻止使用 turbofish,直到我们能确定语义是我们想要的。
struct Foo;
impl Foo {
fn bar(&self, _arg: impl Copy) {}
}
fn main() {
Foo.bar::<u32>(0);
}
浮点数比较在常量上下文中发生变化
以前,在常量上下文中将 NaN
比较为大于其他浮点数将返回 true,这是一个错误;现在,此比较返回 false。在某些情况下,这可能意味着代码的行为会发生变化,但我们预计这种情况不太可能发生。
use std::f64::NAN;
const FOO: bool = ::std::f64::NAN >= ::std::f64::NAN;
# On 1.26.0
assert_eq!(FOO, true);
# On 1.26.1
assert_eq!(FOO, false);
rustup 现在应该可以工作,以便在缺少文档的平台上安装稳定版
在 1.26 的开发周期中,我们对构建标准库文档的方式进行了更改,这使得我们停止为各种 2 级平台生成文档组件。这导致在这些平台上运行 rustup update
时出现故障,因为 rustup 拒绝部分安装 Rust。一些用户可能需要运行 rustup install stable
而不是 rustup update
,以使 rustup 避免缺少文档组件,但这应该是一个一次性问题。
不幸的是,这修复得太晚了,无法将其纳入 1.26 稳定版,因此我们在 1.26.1 中添加了补丁,以允许用户在这些平台上安装 Rust。
$ rustup update
info: syncing channel updates for 'stable-x86_64-unknown-freebsd'
info: latest update on 2018-05-10, rust version 1.26.0 (a77568041 2018-05-07)
error: component 'rust-docs' for 'x86_64-unknown-freebsd' is unavailable for download