Ce code est montré dans The Rust Programming Language:correspondant sur une boîte
#![feature(box_syntax, box_patterns)]
fn main() {
let b = Some(box 5);
match b {
Some(box n) if n < 0 => {
println!("Box contains negative number {}", n);
}
Some(box n) if n >= 0 => {
println!("Box contains non-negative number {}", n);
}
None => {
println!("No box");
}
_ => unreachable!(),
}
}
Mais quand je le lance, l'erreur suivante se produit:
error[E0554]: #[feature] may not be used on the stable release channel
J'ai aussi essayé
fn main() {
let b = Some(box 5);
}
error: box expression syntax is experimental;
Est-ce parce que ma version de Rust n'est pas la dernière? Comment puis-je obtenir le contenu dans Box::new()
? J'ai essayé
fn main() {
let b = Some(Box::new(5));
match b {
Some(Box::new(y)) => print!("{:?}", y),
_ => print!("{:?}", 1),
}
}
error[E0164]: `Box::new` does not name a tuple variant or a tuple struct
--> main.rs:6:14
|
6 | Some(Box::new(y)) => print!("{:?}", y),
| ^^^^^^^^^^^ not a tuple variant or struct
Vous avez lu ** l'intégralité du livre Rust **, vous êtes arrivé au chapitre 6.8 sur la syntaxe de 'box', mais vous n'avez pas lu l'intro du chapitre 6 intitulé [Nightly Rust] (https: //doc.rust-lang .org/stable/book/nightly-rust.html) qui décrit les deux premiers tiers de votre question? – Shepmaster
@S U ont raison. J'ai juste sauté à la syntaxe de Rust. Il semble que l'intro soit aussi importante ... –