mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-03-29 17:10:46 +02:00
* Create default.md * Update SUMMARY.md * Update SUMMARY.md * Update default.md * Update default.md * Update default.md
1.7 KiB
1.7 KiB
Field Shorthand Syntax
If you already have variables with the right names, then you can create the struct using a shorthand:
#[derive(Debug)]
struct Person {
name: String,
age: u8,
}
impl Person {
fn new(name: String, age: u8) -> Person {
Person { name, age }
}
}
fn main() {
let peter = Person::new(String::from("Peter"), 27);
println!("{peter:?}");
}
-
The
new
function could be written usingSelf
as a type, as it is interchangeable with the struct type name#[derive(Debug)] struct Person { name: String, age: u8, } impl Person { fn new(name: String, age: u8) -> Self { Self { name, age } } }
-
Implement the
Default
trait for the struct. Define some fields and use the default values for the other fields.#[derive(Debug)] struct Person { name: String, age: u8, } impl Default for Person { fn default() -> Person { Person { name: "Bot".to_string(), age: 0, } } } fn create_default() { let tmp = Person { ..Default::default() }; let tmp = Person { name: "Sam".to_string(), ..Default::default() }; }
-
Methods are defined in the
impl
block. -
Use struct update syntax to define a new structure using
peter
. Note that the variablepeter
will no longer be accessible afterwards. -
Use
{:#?}
when printing structs to request theDebug
representation.