Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpPtLC 78 of 288 menu
◀ ▶

Цепочка разбора в Rust

Часто нужно, чтобы два необязательных значения одновременно были заполнены. Раньше для этого вкладывали один разбор внутрь другого. В редакции 2024 годов в одном условии можно поставить несколько let подряд, соединив их знаком &&.

Тело выполняется только когда каждый разбор удался. Если хотя бы один Option пуст, условие ложно и блок пропускают. Так код читается в одну строку без лишней вложенности.

Сложим два числа из заполненных вариантов:

fn main() { let first = Some(2); let second = Some(3); if let Some(a) = first && let Some(b) = second { println!("{}", a + b); } }

На экране 5. Оба разбора прошли, поэтому сумма напечаталась. Если заменить один из Some на пустой вариант, блок не выполнится.

Цепочку можно сочетать с обычной проверкой после &&:

fn main() { let x = Some(10); let y = Some(4); if let Some(a) = x && let Some(b) = y && a > b { println!("{}", a - b); } }

Даны две переменные:

let left = Some(8); let right = Some(2);

Запишите условие с цепочкой разбора и выведите произведение, когда оба значения есть.

Даны две переменные:

let one = Some(1); let two: Option<i32> = None;

Объясните, выполнится ли тело при такой цепочке, и что изменится, если two тоже станет Some.

Сравните цепочку в одном условии с двумя вложенными разборами: когда удобнее каждый способ.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить