Menu
Coddy logo textTech

is_some() et is_none()

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

Parfois, vous devez vérifier si un Option contient une valeur sans réellement extraire cette valeur. Rust fournit deux méthodes pratiques pour cela : .is_some() et .is_none().

Les deux méthodes renvoient une valeur booléenne, ce qui les rend parfaites pour une utilisation dans des conditions if :

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

if maybe_score.is_none() {
    println!("No score available");
}

La méthode .is_some() renvoie true si l'Option contient une valeur Some, et false si elle est None. La méthode .is_none() fonctionne de la manière opposée - elle renvoie true pour None et false pour Some.

challenge icon

Défi

Facile

Vous recevrez un nombre en entrée. Créez une Option<i32> qui contient Some(number) si le nombre est positif, ou None si le nombre est nul ou négatif. Utilisez .is_some() et .is_none() pour vérifier l'Option et afficher le message approprié.

Exigences :

  • Lire l'entrée et la convertir en i32
  • Créer une variable Option<i32> :
    • Si le nombre est positif (supérieur à 0), assignez Some(number)
    • Si le nombre est nul ou négatif, assignez None
  • Utilisez .is_some() pour vérifier si l'Option contient une valeur
  • Si .is_some() retourne true, affichez : Positive number detected
  • Utilisez .is_none() pour vérifier si l'Option est vide
  • Si .is_none() retourne true, affichez : No positive number

Entrée :

  • Un seul entier (par exemple, 42, 0, ou -5)

Sortie :

  • Si le nombre est positif : Positive number detected
  • Si le nombre est nul ou négatif : No positive number

Aide-mémoire

Utilisez .is_some() pour vérifier si un Option contient une valeur :

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

Utilisez .is_none() pour vérifier si un Option est vide :

if maybe_score.is_none() {
    println!("No score available");
}

Les deux méthodes renvoient des valeurs booléennes (true ou false).

Essayez vous-même

use std::io;

fn main() {
    // Lire l'entrée
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let number: i32 = input.trim().parse().expect("Invalid input");
    
    // TODO: Écrivez votre code ci-dessous
    // Créer un Option<i32> selon que le nombre est positif ou non
    
    // Vérifier si l'Option est Some 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