Rust possède une pléthore de représentations d'erreurs, mais la bibliothèque
standard met à disposition un trait universel std::error::Error
pour
décrire les erreurs.
En utilisant le pointeur intelligent Box
, nous pouvons utiliser le type
Box<dyn std::error::Error>
comme type courant pour renvoyer des erreurs
car celui-ci nous permet de propager une erreur sur le tas et d'interagir
avec elle sans avoir à connaître le type spécifique.
Au début du Tour de Rust, nous avons appris que main
pouvait renvoyer une
erreur. Avec Box
, nous pouvons maintenant retourner un type capable de
décrire presque tout type d'erreur qui pourrait se produire dans notre
programme à condition que la structure de données de l'erreur implémente
le trait Error
de Rust.
fn main() -> Result<(), Box<dyn std::error:Error>>