You've already forked comprehensive-rust
mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-08-14 20:42:44 +02:00
Create default.md (#370)
* Create default.md * Update SUMMARY.md * Update SUMMARY.md * Update default.md * Update default.md * Update default.md
This commit is contained in:
@@ -26,13 +26,44 @@ fn main() {
|
|||||||
|
|
||||||
* The `new` function could be written using `Self` as a type, as it is interchangeable with the struct type name
|
* The `new` function could be written using `Self` as a type, as it is interchangeable with the struct type name
|
||||||
|
|
||||||
```rust,ignore
|
```rust,editable
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Person {
|
||||||
|
name: String,
|
||||||
|
age: u8,
|
||||||
|
}
|
||||||
impl Person {
|
impl Person {
|
||||||
fn new(name: String, age: u8) -> Self {
|
fn new(name: String, age: u8) -> Self {
|
||||||
Self { name, age }
|
Self { name, age }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
* Implement the `Default` trait for the struct. Define some fields and use the default values for the other fields.
|
||||||
|
|
||||||
|
```rust,editable
|
||||||
|
#[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.
|
* Methods are defined in the `impl` block.
|
||||||
* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` will no longer be accessible afterwards.
|
* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` will no longer be accessible afterwards.
|
||||||
|
Reference in New Issue
Block a user