The Default
Trait
ویژگی Default
یک مقدار پیشفرض برای یک تایپ تولید میکند.
#[derive(Debug, Default)] struct Derived { x: u32, y: String, z: Implemented, } #[derive(Debug)] struct Implemented(String); impl Default for Implemented { fn default() -> Self { Self("John Smith".into()) } } fn main() { let default_struct = Derived::default(); println!("{default_struct:#?}"); let almost_default_struct = Derived { y: "Y is set!".into(), ..Derived::default() }; println!("{almost_default_struct:#?}"); let nothing: Option<Derived> = None; println!("{:#?}", nothing.unwrap_or_default()); }
This slide should take about 5 minutes.
- این ویژگی میتواند به طور مستقیم پیادهسازی شود یا میتواند از طریق
[derive(Default)]#
به صورت خودکار تولید شود. - یک پیادهسازی خودکار، مقداری تولید میکند که در آن تمامی فیلدها به مقادیر پیشفرض خود تنظیم شدهاند.
- این بدان معناست که تمام تایپهای موجود در ساختار نیز باید
Default
را پیادهسازی کنند.
- این بدان معناست که تمام تایپهای موجود در ساختار نیز باید
- نوعهای استاندارد Rust اغلب
Default
را با مقادیر معقول پیادهسازی میکنند (مثل0
،""
و غیره). - مقداردهی جزئی ساختارها با
Default
به خوبی کار میکند. - کتابخانه استاندارد Rust آگاه است که تایپهای مختلف میتوانند
Default
را پیادهسازی کنند و روشهای کمکی را فراهم میکند که از آن استفاده میکنند. - سینتکس
..
به نام سینتکس بهروزرسانی ساختار شناخته میشود.