Structs
Like C and C++, Rust has support for custom structs:
1. struct Person {
2. name: String,
3. age: u8,
4. }
6. fn main() {
7. let mut peter = Person {
8. name: String::from("Peter"),
9. age: 27,
10. };
11. println!("{} is {} years old", peter.name, peter.age);
13. peter.age = 28;
14. println!("{} is {} years old", peter.name, peter.age);
16. let jackie = Person {
17. name: String::from("Jackie"),
18. ..peter
19. };
20. println!("{} is {} years old", jackie.name, jackie.age);
21. }
Key Points:
- Structs work like in C or C++.
- Like in C++, and unlike in C, no typedef is needed to define a type.
- Unlike in C++, there is no inheritance between structs.
- Methods are defined in an
implblock, which we will see in following slides. - This may be a good time to let people know there are different types of structs.
- Zero-sized structs
e.g., struct Foo;might be used when implementing a trait on some type but don’t have any data that you want to store in the value itself. - The next slide will introduce Tuple structs, used when the field names are not important.
- The syntax
..peterallows us to copy the majority of the fields from the old struct without having to explicitly type it all out. It must always be the last element.
