capypad
0 Tage Serie
rust / beginner
Snippet

Methodensyntax mit impl-Blöcken

Der impl-Block ermöglicht es dir, Methoden mit einem Struct zu verknüpfen. Methoden ähneln Funktionen, werden aber innerhalb eines impl-Blocks definiert und haben immer self als ersten Parameter. self bezieht sich auf die Instanz, auf der die Methode aufgerufen wird. Assoziierte Funktionen wie new() werden oft als Konstruktoren verwendet.

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 Rectangle {
width: u32,
height: u32,
}
 
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
fn new(width: u32, height: u32) -> Rectangle {
Rectangle { width, height }
}
fn can_hold(&self, other: &Rectangle) -> bool {
self.width > other.width && self.height > other.height
}
}
 
fn main() {
let rect = Rectangle::new(30, 50);
println!("Area: {}", rect.area());
}
Erklärung
1
impl Rectangle { ... }
Block, das Methoden mit Rectangle verknüpft
2
fn area(&self) -> u32
Methode mit unveränderlicher Referenz auf self
3
Rectangle::new(30, 50)
Ruft assoziierte Funktion unter Verwendung des Struct-Namens auf