2015-01-10 4 views
13

У меня действительно простая функция кошки, написанная в альфа-версии Rust 1.0.Что такое # [предупреждать (неустойчивый)] о в Rust?

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

Это не так, это из-за вашего кода. :-) – Shepmaster

+1

Это соответствует потенциальному предупреждению об устаревании, но там, где замена еще не реализована. Как я могу подавить такие предупреждения? – dhardy

+7

Чтобы ответить на мой вопрос: '#! [Allow (unstable)]' делает трюк. – dhardy

ответ

14

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

Новые, непроверенные или просто не полностью приготовленные функции будут отмечены атрибутом стабильности, а вы won't be able to use unstable features in the beta or release. Вы сможете использовать их только в ночных сборках.

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

В этом случае вся подсистема ввода-вывода претерпевает изменения в последнюю минуту, поэтому она отмечена как нестабильная.

Edit 1

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

+0

Есть ли дорожная карта для ввода-вывода в любом месте? Может быть, в ржавчине репо? – wegry

+6

Эти два, которые я знаю, были бы [beta стабилизации метабог] (https://github.com/rust-lang/rust/issues/20761) и [IO reform RFC] (https://github.com/rust -lang/РЛК/тянуть/517 /) – Shepmaster

Смежные вопросы