Trait Default
Kiểu dữ liệu implement trait Default
sẽ sở hữu một giá trị mặc định.
#[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: "Biến Y đã được gán!".into(), ..Derived::default() }; println!("{almost_default_struct:#?}"); let nothing: Option<Derived> = None; println!("{:#?}", nothing.unwrap_or_default()); }
This slide should take about 5 minutes.
- Người dùng có thể trực tiếp implement trait này, hoặc derive trait này bằng
#[derive(Default)]
. - Khi derive trait này, từng miền của giá trị mặc định được tạo ra sẽ được gán bằng giá trị mặc định của kiểu dữ liệu tương ứng.
- Vì vậy tất cả các miền của struct cũng phải implement
Default
.
- Vì vậy tất cả các miền của struct cũng phải implement
- Kiểu dữ liệu chuẩn của Rust thường hay implement trait
Default
(như0
,""
, vân vân). - Trait này rất hữu dụng khi ta cần khởi tạo struct chỉ với một ít miền.
- Vì các kiểu dữ liệu thường hay implment
Default
, thư viện chuẩn của Rust cũng cung cấp một số hàm giúp người dùng có thể tận dụng giá trị mặc định của biến. - Dấu
..
còn được gọi là ký hiệu update struct.