capypad
0 Tage Serie
rust / beginner
Snippet

Arbeiten mit Option<T>

Option<T> ist Rusts sichere Alternative zu null. Es hat zwei Varianten: Some(value) wenn ein Wert existiert, oder None wenn keiner existiert. Dies zwingt dich, den Fall der Abwesenheit explizit zu behandeln und verhindert Null-Zeiger-Fehler.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fn find_element(arr: &[i32], target: i32) -> Option<usize> {
for (i, &item) in arr.iter().enumerate() {
if item == target {
return Some(i);
}
}
None
}
 
fn main() {
let nums = [1, 3, 5, 7];
match find_element(&nums, 5) {
Some(idx) => println!("Found at index {}", idx),
None => println!("Not found"),
}
if let Some(idx) = find_element(&nums, 2) {
println!("Found at {}", idx);
}
}
Erklärung
1
fn find_element(arr: &[i32], target: i32) -> Option<usize>
Funktion gibt Option<usize> zurück, die entweder Some(index) oder None ist
2
return Some(i);
Gibt Some(index) zurück, eingewickelt in das Option-Enum
3
None => println!("Not found")
Behandelt den Fall, in dem das Element nicht gefunden wurde
4
if let Some(idx) = find_element(&nums, 2)
Kompaktes Pattern-Matching, wenn uns nur der Some-Fall interessiert