capypad
0 Tage Serie
rust / beginner
Snippet

Struct-Instanzen erstellen

Structs gruppieren verwandte Daten. Der 'impl'-Block hängt Methoden an ein Struct. 'Self' bezieht sich auf den Struct-Typ, 'self' auf die Instanz. Das 'new' Konstruktor-Muster ist üblich. Instanzfelder werden mit Punktnotation zugegriffen.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct Person {
name: String,
age: u32,
active: bool,
}
 
impl Person {
fn new(name: &str, age: u32) -> Self {
Self { name: String::from(name), age, active: true }
}
fn introduce(&self) {
println!("Hi, I'm {} and I'm {} years old", self.name, self.age);
}
}
 
fn main() {
let alice = Person::new("Alice", 30);
let bob = Person { name: String::from("Bob"), age: 25, active: true };
alice.introduce();
println!("{} is active: {}", bob.name, bob.active);
}
Erklärung
1
struct Person { ... }
Struct-Definition mit drei Feldern verschiedener Typen
2
impl Person { fn new(...) -> Self { ... } }
Assoziierte Funktion als Konstruktor, gibt Self zurück
3
let alice = Person::new("Alice", 30);
Konstruktor mit :: Syntax aufrufen
4
alice.introduce();
Methodenaufruf nutzt Punktnotation, self wird geborgt