Menu
Coddy logo textTech

is_ok() et is_err()

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 44 sur 66.

Parfois, vous avez besoin de vérifier rapidement si un Result représente un succès ou un échec sans extraire les valeurs réelles. Rust fournit deux méthodes pratiques pour cela : .is_ok() et .is_err().

Les deux méthodes renvoient une valeur booléenne, ce qui les rend parfaites pour des vérifications conditionnelles simples. La méthode .is_ok() renvoie true si le Result est Ok, et false s'il s'agit d'un Err. La méthode .is_err() fonctionne à l'inverse :

let success: Result = Ok(42);
let failure: Result = Err("Something went wrong");

if success.is_ok() {
    println!("Operation succeeded!");
}

if failure.is_err() {
    println!("Operation failed!");
}

Ces méthodes sont particulièrement utiles lorsque vous avez seulement besoin de connaître le statut du résultat sans vous soucier des valeurs spécifiques à l'intérieur. Contrairement à match, elles ne consomment pas le Result, vous pouvez donc toujours l'utiliser par la suite.

challenge icon

Défi

Facile

Vous recevrez deux entrées. La première entrée est un nombre (sous forme de chaîne de caractères), et la deuxième entrée est un indicateur de statut (success ou failure). Créez un Result<i32, &'static str> basé sur le statut. Si le statut est success, créez un Ok contenant le nombre analysé. Si le statut est failure, créez un Err avec le message "Operation failed". Utilisez .is_ok() et .is_err() pour vérifier le statut du résultat et afficher le message approprié.

Exigences :

  • Lire la première entrée (nombre) et supprimer les espaces blancs
  • Analyser la première entrée en i32
  • Lire la deuxième entrée (statut) et supprimer les espaces blancs
  • Créer une variable Result<i32, &'static str> :
    • Si le statut est success, assigner Ok(parsed_number)
    • Si le statut est failure, assigner Err("Operation failed")
  • Utiliser .is_ok() pour vérifier si le résultat est un succès :
    • Si vrai, afficher : Success detected
  • Utiliser .is_err() pour vérifier si le résultat est une erreur :
    • Si vrai, afficher : Error detected

Entrée :

  • Première ligne : Un nombre (par exemple, 42)
  • Deuxième ligne : Soit success soit failure

Sortie :

  • Si le statut est success : Success detected
  • Si le statut est failure : Error detected

Aide-mémoire

Rust propose deux méthodes pour vérifier l'état d'un Result sans en extraire les valeurs :

  • .is_ok() - retourne true si le Result est Ok, false sinon
  • .is_err() - retourne true si le Result est Err, false sinon
let success: Result<i32, &str> = Ok(42);
let failure: Result<i32, &str> = Err("Something went wrong");

if success.is_ok() {
    println!("Operation succeeded!");
}

if failure.is_err() {
    println!("Operation failed!");
}

Ces méthodes sont utiles pour des vérifications conditionnelles simples lorsque vous avez seulement besoin de connaître le statut du résultat. Contrairement à match, elles ne consomment pas le Result, ce qui vous permet de l'utiliser par la suite.

Essayez vous-même

use std::io;

fn main() {
    // Lire la première entrée (nombre)
    let mut number_input = String::new();
    io::stdin().read_line(&mut number_input).expect("Failed to read line");
    let number_input = number_input.trim();
    
    // Analyser le nombre en i32
    let parsed_number: i32 = number_input.parse().expect("Failed to parse number");
    
    // Lire la deuxième entrée (statut)
    let mut status = String::new();
    io::stdin().read_line(&mut status).expect("Failed to read line");
    let status = status.trim();
    
    // TODO: Créer un Result<i32, &'static str> basé sur le statut
    // Si le statut est "success", créer Ok(parsed_number)
    // Si le statut est "failure", créer Err("Operation failed")
    
    // TODO: Utiliser .is_ok() et .is_err() pour vérifier le résultat et afficher le message approprié
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow