Smart Pointer Structs
Box, Rc, Arc และอื่นๆ
fn main() { // Box - heap allocation let boxed = Box::new(42); println!("Boxed: {}", boxed);
// Deref let value: i32 = *boxed; println!("Unboxed: {}", value);
// Recursive types need Box #[derive(Debug)] enum List { Cons(i32, Box<List>), Nil, }
let list = List::Cons(1, Box::new(List::Cons(2, Box::new(List::Cons(3, Box::new(List::Nil))))));
println!("List: {:?}", list);
// Box for trait objects trait Animal { fn speak(&self) -> &str; }
struct Dog; impl Animal for Dog { fn speak(&self) -> &str { "woof" } }
let animal: Box<dyn Animal> = Box::new(Dog); println!("Animal says: {}", animal.speak());
// Box::leak for 'static let leaked: &'static str = Box::leak(String::from("forever").into_boxed_str()); println!("Leaked: {}", leaked);}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google