rust / beginner
Snippet
Arbeiten mit Option<T>
Option<T> repräsentiert einen Wert, der existieren kann oder nicht. Some(T) enthält einen Wert, None repräsentiert Abwesenheit. Anders als null in anderen Sprachen wird Option zur Kompilierzeit typsicher geprüft. Die if let-Syntax ermöglicht Pattern Matching für Option, und unwrap_or() liefert einen Standardwert.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fn find_element(arr: &[i32], target: i32) -> Option<usize> {arr.iter().position(|&x| x == target)}fn main() {let data = vec![10, 20, 30, 40];let result = find_element(&data, 30);if let Some(index) = result {println!("Found at index: {}", index);}let missing = find_element(&data, 100);println!("Missing: {:?}", missing);let idx = find_element(&data, 20).unwrap_or(usize::MAX);println!("Index or default: {}", idx);}
Erklärung
1
.position(|&x| x == target)
Gibt Option<usize> zurück: Some(index) falls gefunden, None sonst
2
if let Some(index) = result
Dekonstruiert Option mit Pattern Matching
3
.unwrap_or(usize::MAX)
Gibt Wert in Some zurück, oder Standardwert falls None