Vec<T> ist die wachsende Liste (push, len, Iteratoren mit map und filter). Ein Trait beschreibt Verhalten, das Typen umsetzen können, ähnlich einem Interface. Mit dem ?-Operator reichst du Fehler kurz an den Aufrufer weiter.
Tests schreibst du direkt im Code mit #[test] und startest sie mit cargo test.
trait Laut { fn laut(&self) -> String; }
struct Hund;
impl Laut for Hund {
fn laut(&self) -> String { "Wuff".to_string() }
}
fn verdoppeln(s: &str) -> Result<i32, std::num::ParseIntError> {
let n: i32 = s.parse()?; // Fehler wird weitergereicht
Ok(n * 2)
}
fn main() {
let mut v = vec![1, 2, 3];
v.push(4);
let gerade: Vec<i32> = v.iter().filter(|&&x| x % 2 == 0).cloned().collect();
println!("{:?} {} {:?}", gerade, Hund.laut(), verdoppeln("21"));
}Merke
Vec<T>wächst,vec![...]legt sie anTraits beschreiben Verhalten
?reicht Fehler an den Aufrufer
Aufgabe
Schreibe einen Test mit `#[test]`, der eine Funktion prüft.