Pin Module
Pin และ Unpin สำหรับ memory safety
Pin Basics
Section titled “Pin Basics”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 เพื่อปลดล็อกบทความทั้งหมด
Login with Google