2015-01-10 15 views
13

Mam naprawdę prostą funkcję kota napisaną w rdzy 1.0 alpha.Co to jest # [warn (unstable)] w 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); 
    } 
} 

Kiedy go skompilować, otrzymuję następujące ostrzeżenia:

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

Czy istnieje sposób, aby rozwiązać te ostrzeżenia?

+1

Nie jest, to z powodu kodu. :-) – Shepmaster

+1

To odpowiada potencjalnemu ostrzeżeniu o wycofaniu, ale tam, gdzie zastąpienie nie zostało jeszcze zaimplementowane. Jak zmiękczyć takie ostrzeżenia? – dhardy

+7

Aby odpowiedzieć na moje pytanie: '#! [Allow (unstable)]' robi lewę. – dhardy

Odpowiedz

14

W wersji 1.0, Rust chce zapewnić bardzo silną gwarancję, jakie funkcje języka i biblioteki standardowej będą dostępne dla całego okresu języka. To nie jest łatwe zadanie!

Nowe, nietestowane lub po prostu niegotowane funkcje zostaną oznaczone atrybutem stabilności, a Ty: won't be able to use unstable features in the beta or release. Będziesz mógł ich używać tylko w nocnych kompilacjach.

Jednak po alpha są to po prostu ostrzeżenia. Jeśli potrzebujesz użyć funkcji w alfie i jest ona oznaczona jako unstable, musisz upewnić się, że staje się stabilna (lub znajdziesz alternatywne rozwiązanie) przed wersją beta!

W tym przypadku cały podsystem IO ulega zmianom w ostatniej chwili, dlatego jest oznaczany jako niestabilny.

Edycja 1

Kiedy PR 21543 ziemie, obecny świat znany jako std::io zostanie przemianowana std::old_io. Nowo napisany kod przejdzie do std::io, a stara wersja zostanie uznana za przestarzałą.

+0

Czy istnieje mapa drogowa dla IO w dowolnym miejscu? Może w reporze rdzy? – wegry

+6

Dwóch, których znam, to [beta stabilizacji metabolizmu] (https://github.com/rust-lang/rust/issues/20761) i [IO reformy RFC] (https://github.com/rust -lang/rfcs/pull/517 /) – Shepmaster