rust / beginner
Snippet
Option<T>: Sichere Behandlung fehlender Werte
Option<T> ist Rusts Typ für die Repräsentation eines Werts, der existieren könnte oder nicht. Es hat zwei Varianten: Some(T) wenn ein Wert vorhanden ist, und None wenn nicht. Dies zwingt dich, beide Fälle zu behandeln und eliminiert Null-Zeiger-Fehler zur Kompilierzeit.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fn find_element(arr: &[i32], target: i32) -> Option<usize> {for (index, &value) in arr.iter().enumerate() {if value == target {return Some(index);}}None}fn main() {let numbers = [10, 20, 30, 40, 50];// Using match to handle Optionlet result = find_element(&numbers, 30);match result {Some(index) => println!("Found at index: {}", index),None => println!("Element not found"),}// Using if let for concise handlingif let Some(index) = find_element(&numbers, 25) {println!("Found at index: {}", index);} else {println!("Element not found with if let");}// Using unwrap_or for default valueslet index = find_element(&numbers, 100).unwrap_or(999);println!("Index or default: {}", index);}
Erklärung
1
fn find_element(arr: &[i32], target: i32) -> Option<usize>
Funktion gibt Option<usize> zurück, entweder Some(index) oder None
2
return Some(index);
Gibt Some-Variante mit dem Index zurück, wenn Element gefunden wurde
3
None
Gibt None-Variante zurück, wenn Schleife ohne Fund beendet wird
4
if let Some(index) = find_element(&numbers, 25)
Pattern Matching, das Wert aus Some extrahiert, oder else-Block für None ausführt
5
unwrap_or(999)
Gibt den enthaltenen Wert oder einen Standardwert zurück, wenn None