什么是#[警告(不稳定)]关于Rust?

时间:2015-01-10 04:05:16

标签: io rust

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

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 :(得分:14)

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

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

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

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

修改1

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