Avatar ·

Manière propre de convertir Result en Option en Rust

Bonjour, collègues ! Je viens de commencer à apprendre Rust et j'ai rencontré une situation typique : j'ai une fonction qui retourne `Result`, mais pour la suite du travail j'ai besoin d'un `Option`. Par exemple, je lis une variable d'environnement : ```rust use std::env; fn main() { let port: Option = env::var("PORT") // Result .and_then(|s| s.parse()) // Result .ok(); // ??? } ``` Je sais qu'on peut utiliser `.ok()`, qui transforme `Result` en `Option`, en ignorant l'erreur. Mais cela me semble une approche pas très propre — on perd l'information sur l'erreur. Peut-être existe-t-il une manière plus idiomatique ? Deuxième problème : j'ai une chaîne d'appels avec plusieurs `Result`, et je veux les transformer en `Option` à l'étape finale, mais sans perdre le contexte de l'erreur pour la journalisation. Comment faire cela élégamment ? Merci de m'indiquer les manières propres et acceptées par la communauté Rust de résoudre cela. Merci d'avance !