Rust 中的#[warn(unstable)] 是什么意思?

What is #[warn(unstable)] about in Rust?

我有一个用 Rust 1.0 alpha 编写的非常简单的 cat 函数。

use std::io;

fn main(){
    let mut reader = io::stdin();
    loop {
        let input = reader.read_line().ok().expect("Failed to read line");
        print!("{}", input);
    }
}

当我编译它时,我收到以下警告:

bindings.rs:5:26: 5:35 warning: use of unstable item, #[warn(unstable)] on by default
bindings.rs:5         let mut reader = io::stdin();
                                       ^~~~~~~~~
bindings.rs:6:28: 6:39 warning: use of unstable item, #[warn(unstable)] on by default
bindings.rs:6         let input = reader.read_line().ok().expect("Failed to read line");
                                         ^~~~~~~~~~~

有没有办法补救这些警告?

对于 1.0 版本,Rust 希望提供关于语言和标准库的哪些功能在语言的整个生命周期 中可用的非常有力的保证。这不是一件容易的事!

新的、未测试的或未完全煮熟的功能将标有稳定性属性,而您 won't be able to use unstable features in the beta or release。您将只能在夜间构建中使用它们。

然而,在 alpha 期间,它们只是警告。如果您需要使用 alpha 中的某个功能并且它被标记为 unstable,那么您将需要确保它在 beta 之前变得稳定(或者您找到替代解决方案)!

在这种情况下,整个 IO 子系统正在进行最后一刻的更改,因此它被标记为不稳定。

编辑 1

PR 21543登陆时,当前称为std::io的世界将更名为std::old_io。新编写的代码将进入 std::io,旧版本将被弃用。