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>>