panic! vs Result
Intermédiairepanic!: bug du programmeur, état irrécupérable (index hors limites, invariant violé).Result: échec attendu (fichier absent, réseau coupé, saisie invalide).
Cas pratique : parser un fichier de nombres, un par ligne, en s'arrêtant à la première erreur.
fn somme_fichier(chemin: &str) -> Result<i32, AppError> { let contenu = std::fs::read_to_string(chemin)?; contenu .lines() .map(|l| l.parse::<i32>().map_err(AppError::from)) .sum() // Result<i32, _> : s'arrête à la première Err }