Menu
Coddy logo textTech

is_some() e is_none()

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 37 de 66.

Às vezes você precisa verificar se um Option contém um valor sem realmente extrair esse valor. Rust fornece dois métodos convenientes para isso: .is_some() e .is_none().

Ambos os métodos retornam um valor booleano, tornando-os perfeitos para uso em condições 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");
}

O método .is_some() retorna true se o Option contém um valor Some, e false se for None. O método .is_none() funciona de maneira oposta - ele retorna true para None e false para Some.

challenge icon

Desafio

Fácil

Você receberá um número como entrada. Crie um Option<i32> que contenha Some(number) se o número for positivo, ou None se o número for zero ou negativo. Use .is_some() e .is_none() para verificar o Option e imprimir a mensagem apropriada.

Requisitos:

  • Leia a entrada e converta-a para i32
  • Crie uma variável Option<i32>:
    • Se o número for positivo (maior que 0), atribua Some(number)
    • Se o número for zero ou negativo, atribua None
  • Use .is_some() para verificar se o Option contém um valor
  • Se .is_some() retornar true, imprima: Positive number detected
  • Use .is_none() para verificar se o Option está vazio
  • Se .is_none() retornar true, imprima: No positive number

Entrada:

  • Um único número inteiro (ex: 42, 0, ou -5)

Saída:

  • Se o número for positivo: Positive number detected
  • Se o número for zero ou negativo: No positive number

Folha de consulta

Use .is_some() para verificar se um Option contém um valor:

let maybe_score = Some(85);

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

Use .is_none() para verificar se um Option está vazio:

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

Ambos os métodos retornam valores booleanos (true ou false).

Experimente você mesmo

use std::io;

fn main() {
    // Ler a entrada
    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: Escreva seu código abaixo
    // Cria um Option<i32> baseado em se o número é positivo
    
    // Verifica se o Option é Some e imprime a mensagem apropriada
    
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow