capypad
0 Tage Serie
rust / beginner
Snippet

Methoden definieren und implementieren mit impl

Der impl-Block verknupft Funktionen und Methoden mit einem Struct. Methoden nehmen self (oder &self, &mut self) als ersten Parameter. Assoziierte Funktionen wie new werden haufig als Konstruktoren verwendet und nehmen kein self.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Rectangle {
width: u32,
height: u32,
}
 
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
fn new(width: u32, height: u32) -> Self {
Rectangle { width, height }
}
}
 
fn main() {
let rect = Rectangle::new(30, 50);
println!("Area: {}", rect.area());
}
Erklärung
1
struct Rectangle {
Struct-Definition mit zwei vorzeichenlosen 32-Bit Integer-Feldern
2
width: u32,
Feld, das die Breite des Rechtecks speichert
3
height: u32,
Feld, das die Hohe des Rechtecks speichert
4
impl Rectangle {
Implementierungsblock fur das Rectangle-Struct
5
fn area(&self) -> u32 {
Methode, die self unveranderlich borrowt und unsigned 32-bit Integer zuruckgibt
6
self.width * self.height
Multipliziert Breite und Hoehenfelder zur Flachenberechnung
7
fn new(width: u32, height: u32) -> Self {
Assoziierte Konstruktorfunktion, die eine neue Rectangle-Instanz zuruckgibt