Найти в Дзене
Ржавый код

Раскройте магию Rust - освоите if-let, while-let и let-else с помощью забавных и увлекательных примеров

Оглавление

Погружаясь в волшебный мир `if-let`, `while-let` и `let-else`, мы откроем для себя мощь и элегантность возможностей Rust по сопоставлению шаблонов. В этой статье мы рассмотрим, как эти три функции могут помочь вам упростить ваш код и сделать его более читаемым и ремонтопригодным. Вы узнаете, как это сделать: на простых, понятных для детей примерах.

  1. Используйте `if-let` для изящной обработки необязательных значений, позволяет вам выполнять действия со значениями, когда они доступны, и с легкостью отбрасывать пустые значения.
  2. Раскройте потенциал `while-let` для многократного выполнения действий со значениями внутри контейнеров, таких как мешочек или коробка, останавливаясь только тогда, когда контейнер пуст.
  3. Используйте `let-else` для привязки переменных, когда шаблон совпадает, или для отклонения с помощью таких действий, как прерывание, возврат или паника, когда шаблон не совпадает.

К концу этой статьи у вас будет четкое представление об этих трех мощных команд Rust, которые откроют новые возможности в вашем коде и сделают вас более эффективным и уверенным в себе программистом Rust.

if-let

Давайте представим, что у нас есть волшебная шкатулка, в которой иногда находится игрушка, а иногда она пуста. Мы хотим проверить, есть ли внутри игрушка, и поиграть с ней, но мы не хотим ничего делать, если коробка пуста.

В Rust мы используем `if-let` для выполнения подобных действий. Это позволяет нам проверить, есть ли что-то внутри “коробки” (называемой `Option`), и сделать что-то с этим, только если там что то есть.

Допустим, у нас есть волшебная шкатулка под названием `my_magical_box`:

-2

Мы можем использовать `if-let`, чтобы проверить, есть ли внутри игрушка, и поиграть с ней:

-3

Если игрушка есть, мы увидим следующее сообщение: “Ура! Внутри коробки есть игрушка! Давайте играть!” Однако, если там ничего нет, мы не увидим никакого сообщения.

Теперь посмотрим на другой пример. Предположим, у нас есть волшебная корзина с фруктами, которая может либо содержать фрукт, либо быть пустой:

-4

Посмотрим, есть ли там фрукт: “Вкуснятина! Мы обнаружили яблоко! Давайте съедим!” Однако, если она пуста, мы не увидим этого сообщения.

-5

Если корзина пуста, мы услышим: “О, нет! Корзина с фруктами пуста. Давайте найдем плоды!”

Вот так работает `if-let` в Rust! Это позволяет нам проверить, находится ли что-то внутри “коробки”, и делать что-то с ним только в том случае, если внутри есть значение. Когда поле пусто, мы можем использовать `else`, чтобы что-то сделать.

while-let

Давайте поговорим о ключевом слове `while-let` в Rust, как если бы это была история. Предположим, у вас есть пакет с конфетами, и вы хотите доставать их одну за другой, пока пакет не опустеет.

В Rust мы используем `while-let` для достижения этой цели. Это позволяет нам продолжать что-то делать со значениями, содержащимися в “пакете” (называемом `Option`), пока пакет не опустеет.

Вот простой пример. Предположим, у нас есть волшебный пакетик для конфет с именем `my_magical_candy_bag`:

-6

Это означает, что у нас внутри пакета 5 конфет. Мы можем использовать `while-let`, чтобы доставать конфеты из пакета одну за другой:

-7

Мы обновляем количество конфет, оставшихся в пакете, каждый раз, когда съедаем одну. Когда пакет пуст, мы устанавливаем для него значение `None`, указывающее, что он пуст, и цикл `while-let` заканчивается.

Вот еще один пример. Предположим, у нас есть волшебная шкатулка, содержащая цифры от 1 до 5:

-8

Мы можем использовать `while-let`, чтобы извлекать числа из массива одно за другим и выводить их в консоль:

-9

Это приведет к печати:

-10

Вот как `while-let` работает в Rust! Это помогает нам продолжать что-то делать со значениями внутри "пакета" или "коробки", пока они не опустеют.

let-else

Представьте себе волшебную шкатулку, которая может содержать игрушку или быть пустой. Вы хотите открыть коробку и поиграть с игрушкой внутри, но если она пуста, вы хотите сделать что-то еще, например, купить новую игрушку.

Чтобы достичь этого, мы можем использовать ключевое слово let-else в Rust. Это позволяет нам увидеть, есть ли что-то внутри “коробки” (например, `Option`), и если да, то мы можем это использовать. Мы можем сделать что-то еще, если коробка пуста.

Вот простой пример. Предположим, у нас есть волшебная шкатулка с именем `my_magical_box`:

-11

Мы можем использовать `let-else`, чтобы проверить, есть ли внутри игрушка, и поиграть с ней. Если коробка пуста, мы можем купить новую игрушку:

-12

Мы посмотрим, есть ли там игрушка: “Ура! Мы обнаружили игрушку в коробке! Давайте поиграем!” Однако, если он пуст, мы увидим: “О нет! Коробка совершенно пуста. Давай купим новую игрушку!”.

Вот как работает `let-else` в Rust! Это позволяет нам определить, есть ли что-то внутри “коробки” или нет, а затем использовать это, если есть. Мы можем сделать что-то еще, если коробка пуста.

Наконец, мы погрузились в увлекательный мир возможностей сопоставления с образцами Rust, используя `if-let`, `while-let` и `let-else`. Теперь вы должны иметь четкое представление о том, как эти команды могут улучшить ваш опыт программирования на Rust, сделав ваш код более элегантным, читаемым и ремонтопригодным. Вы открыли для себя магию подбора шаблонов в Rust и сделали значительный шаг вперед в своем путешествии по Rust благодаря нашим веселым и увлекательным примерам.

Не забывайте продолжать практиковаться и применять эти концепции к реальным проблемам по мере того, как вы продолжаете исследовать Rust и узнавать о нем больше. Выразительность и безопасность Rust - вот что придает ему силу, и овладение этими инструментами подбора шаблонов поможет вам эффективно использовать эту силу. Так что дерзайте, и пусть магия Rust вдохновит вас на создание еще более потрясающего программного обеспечения!

Статья на list-site.