capypad
0 Tage Serie
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
rust
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