Skip to content
เข้าสู่ระบบ

Pin Module

Pin และ Unpin สำหรับ memory safety

use std::pin::Pin;
use std::marker::PhantomPinned;
fn main() {
// Pin wraps a pointer type
println!("=== Pin<P> ===");
println!("P can be: &T, &mut T, Box<T>, Rc<T>, Arc<T>");
println!();
// Most types are Unpin - safe to move
let mut x = 42;
let pinned: Pin<&mut i32> = Pin::new(&mut x);
println!("i32 is Unpin: pinned value = {}", *pinned);
// Can get mutable access for Unpin types
let inner: &mut i32 = pinned.get_mut();
*inner = 100;
println!("Modified: {}", *inner);
// Box::pin for heap allocation
let boxed: Pin<Box<String>> = Box::pin(String::from("hello"));
println!("\nBox::pin: {}", boxed);
// Pin::into_inner for Unpin types
let pinned = Pin::new(&42);
let _inner = Pin::into_inner(pinned);
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด