rc.rs
This commit is contained in:
@@ -1,15 +1,38 @@
|
||||
use std::rc::Rc;
|
||||
|
||||
fn main() {
|
||||
let a = Rc::new(0);
|
||||
|
||||
println!("{}", Rc::strong_count(&a));
|
||||
let b = a.clone();
|
||||
println!("{}", Rc::strong_count(&a));
|
||||
let c = Rc::clone(&a);
|
||||
println!("{}", Rc::strong_count(&a));
|
||||
|
||||
println!("{}", a);
|
||||
println!("{}", b);
|
||||
println!("{}", c);
|
||||
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user