Изучая Rust...
Здравствуйте. Пытаюсь реализовать список на Rust. Вот что у меня получилось:
use std::fmt;
struct Node {
value: i32,
link: Option<Box<Node>>,
}
impl Node {
fn new(value: i32) -> Node {
Node { value: value, link: None, }
}
fn append(&mut self, value: i32) {
match self.link {
Some(ref mut node) => node.append(value),
None => self.link = Some(Box::new(Node::new(value))),
}
}
fn length(&self) -> i32 {
match self.link {
Some(ref node) => node.length() + 1,
None => 1,
}
}
fn insert_after(&mut self, value: i32, after: i32) -> bool {
if self.value == after {
self.link = Some(Box::new(Node { value: value, link: self.link.take() }));
true
}
else {
match self.link {
Some(ref mut node) => node.insert_after(value, after),
None => false,
}
}
}
}
impl fmt::Display for Node {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.value)
while
}
}
fn main() {
let mut stack = Node::new(1024);
stack.append(67);
println!("{}", stack);
}
Подскажите, как можно напечатать все элементы списка? В текущей реализации выводится только первый элемент.