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

Шпаргалка

Используйте .is_some(), чтобы проверить, содержит ли Option значение:

let maybe_score = Some(85);

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

Используйте .is_none(), чтобы проверить, является ли Option пустым:

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

Оба метода возвращают логические значения (true или false).

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

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