fn main() {
use std::cell::RefCell;
let a = RefCell::new(String::from("hello"));
let alias = a.borrow();
println!("{alias}");
let mut m = a.borrow_mut(); // panic here cause already borrowed mutably
m.push_str(" world");
}
use std::rc::Rc;
use std::cell::RefCell;
use crate::List::{ Nil, Cons };
#[derive(Debug)]
enum List<T> {
Nil,
Cons(Rc<RefCell<T>>, Rc<List<T>>),
}
fn main() {
let value = Rc::new(RefCell::new(5));
let a = Rc::new(Cons(Rc::clone(&value), Rc::new(Nil)));
let b = Cons(Rc::new(RefCell::new(3)), Rc::clone(&a));
let c = Cons(Rc::new(RefCell::new(4)), Rc::clone(&a));
*value.borrow_mut() = 10;
println!("{a:?}");
println!("{b:?}");
println!("{c:?}");
}