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 ! */
}
}
}