Erreurs en Rust
Rappel en C
#include <stdio.h>
int main() {
FILE *f = fopen("fichier.txt","rt");
if(f == NULL) {
/** gestion de l'erreur mais
si tu veux faire n'importe
quoi et utiliser f en essayant
de lire le fichier car tu es bornée tu peux **/
}
...
}
Python
x = 0
En Rust
En Rust, File::open("fichier.txt")
renvoie une valeur de type Result
qui est un enum comme ça :
#![allow(unused)] fn main() { pub enum Result<T, E> { Ok(T), Err(E), } }
où T
est le type de l'objet attendu (ici un fichier) et E
est le type de l'erreur.
Ainsi on fait du pattern matching :
#![allow(unused)] fn main() { use std::fs::File; match File::open("fichier.txt") { Ok(f) => { /* l'ouverture s'est bien déroulée on fait mumuse avec le fichier*/ } Err(e) => { /* il y a eu une erreur et on ne peut pas faire trop de bêtise avec le fichier car on ne l'a même pas sous la main ! */ } } }