Files
simple-rust-tests/single_file_tests/rc.rs
2020-04-18 09:19:56 +08:00

39 lines
699 B
Rust

use std::rc::Rc;
enum List {
Cons(i32, Rc<List>),
Nil,
}
use List::{ Cons, Nil, };
fn print_list(list: &List) {
match list {
Cons(i, list) => {
println!("i -> {}", i);
print_list(&list);
},
Nil => (),
}
}
fn print_list2(mut list: &List) {
while let Cons(i, next_list) = list {
println!("i --> {}", i);
list = next_list;
}
}
fn main() {
let a = Rc::new(Cons(5, Rc::new(Cons(10, Rc::new(Nil)))));
let b = Cons(3, Rc::clone(&a));
let c = Cons(4, a.clone());
println!("print a");
print_list(&a);
println!("print b");
print_list(&b);
println!("print c");
print_list2(&c);
}