wiki/dev/lang/rust/Struct.md

89 lines
1 KiB
Markdown
Raw Normal View History

2023-11-19 00:23:43 +03:00
# Struct.
# Types.
## Classic.
```rust
struct ColorClassicStruct {
red: i32,
green: i32,
blue: i32,
}
```
```rust
let mut green = ColorClassicStruct {
red: 0,
green: 255,
blue: 0,
}
green.red = green.blue;
```
## Tuple.
Have no field names.
```rust
struct Point(i32, i32, i32);
let x = Point(0, 0, 0);
```
## Unit-like.
Have nothing. TODO: add use-cases.
```rust
struct AlwaysEqual;
let subject = AlwaysEqual;
```
# Shortcuts.
## Field-init.
Copy values with the same name.
```rust
fn create_color(red: i32, green: i32, blue: i32) -> ColorClassicStruct {
ColorClassicStruct {
red,
green,
blue,
}
}
```
## Struct update.
Copy the rest of the struct.
```rust
let color2 = ColorClassicStruct {
red: 255,
..color1
};
```
# Logic.
You can write logic in structs.
```rust
struct Package {
sender_country: String,
recipient_country: String,
fee: u32
}
impl Package {
fn is_international(&self) -> bool {
self.sender_country != self.recipient_country
}
}
```