Menu
Coddy logo textTech

is_some() и is_none()

Часть раздела Logic & Flow путешествия по Rust на Coddy. Урок 37 из 66.

Иногда вам нужно проверить, содержит ли Option значение, не извлекая его на самом деле. Rust предоставляет для этого два удобных метода: .is_some() и .is_none().

Оба метода возвращают логическое значение, что делает их идеальными для использования в условиях 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");
}

Метод .is_some() возвращает true, если Option содержит значение Some, и false, если это None. Метод .is_none() работает противоположным образом — он возвращает true для None и false для Some.

challenge icon

Задание

Легко

Вы получите число на вход. Создайте Option<i32>, который содержит Some(number), если число положительное, или None, если число равно нулю или отрицательное. Используйте .is_some() и .is_none(), чтобы проверить Option и вывести соответствующее сообщение.

Требования:

  • Прочитайте входные данные и преобразуйте их в i32
  • Создайте переменную типа Option<i32>:
    • Если число положительное (больше 0), присвойте Some(number)
    • Если число равно нулю или отрицательное, присвойте None
  • Используйте .is_some(), чтобы проверить, содержит ли Option значение
  • Если .is_some() возвращает true, выведите: Positive number detected
  • Используйте .is_none(), чтобы проверить, является ли Option пустым
  • Если .is_none() возвращает true, выведите: No positive number

Ввод:

  • Одно целое число (например, 42, 0 или -5)

Вывод:

  • Если число положительное: Positive number detected
  • Если число равно нулю или отрицательное: No positive number

Попробуйте сами

use std::io;

fn main() {
    // Чтение ввода
    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: Напишите свой код ниже
    // Создайте Option<i32> в зависимости от того, является ли число положительным
    
    // Проверьте, является ли Option значением Some, и выведите соответствующее сообщение
    
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow

Потренируйтесь самостоятельно: Онлайн-компилятор Rust