Newtype Pattern
Newtype pattern ใน Rust ใช้สำหรับ type safety, abstraction และ implementing traits บน external types
1. Basic Newtype
Section titled “1. Basic Newtype”Newtype คือ tuple struct ที่มี single field ให้ type ใหม่ที่แยกจาก underlying type
Creating Newtypes
Section titled “Creating Newtypes”// Newtype = tuple struct with single fieldstruct Meters(f64);struct Kilometers(f64);struct Miles(f64);
impl Meters { fn new(value: f64) -> Self { Meters(value) }
fn value(&self) -> f64 { self.0 }}
// Conversion traitsimpl From<Kilometers> for Meters { fn from(km: Kilometers) -> Self { Meters(km.0 * 1000.0) }}
impl From<Miles> for Meters { fn from(mi: Miles) -> Self { Meters(mi.0 * 1609.344) }}
fn main() { let m = Meters::new(1000.0); let km = Kilometers(5.0); let mi = Miles(3.0);
println!("{} meters", m.value()); println!("{} km = {} meters", km.0, Meters::from(km).value()); println!("{} miles = {} meters", mi.0, Meters::from(mi).value());
// Type safety: can't mix types // let total = m + km; // Compile error!}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google