Подтвердить что ты не робот

Что такое # [предупреждать (нестабильно)] о в Rust?

У меня есть действительно простая функция cat, написанная в альфа-версии Rust 1.0.

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");
                                         ^~~~~~~~~~~

Есть ли способ устранить эти предупреждения?

4b9b3361

Ответ 1

В выпуске 1.0 Rust хочет предоставить очень сильную гарантию того, какие функции языка и стандартной библиотеки будут доступны для всей жизни языка. Это нелегкий подвиг!

Новые, непроверенные или просто не полностью готовые функции будут отмечены атрибутом стабильности, и вы не сможете использовать неустойчивые функции в бета или релиз. Вы сможете использовать их только в ночных сборках.

Во время альфы, однако, это просто предупреждения. Если вам нужно использовать функцию в альфе, и она помечена как unstable, тогда вы захотите убедиться, что она станет стабильной (или вы найдете альтернативное решение) перед бета-тестированием!

В этом случае вся подсистема IO претерпевает изменения в последнюю минуту, поэтому она помечена как неустойчивая.

Изменить 1

Когда PR 21543 приземляется, текущий мир, известный как std::io, будет переименован в std::old_io. Новый код перейдет в std::io, и старая версия будет устаревшей.