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

Сегодня я хотел бы поделиться своим личным взглядом на поток управления Rust с точки зрения Java-разработчика.

Давайте кратко поговорим о похожих вещах

Все вещи, которые мы используем в Java, такие как while/for и if…else подобны в Rust. Но многие вещи в Rust не существуют в Java.

Теперь поговорим о разных вещах

Отправной точкой, о которой мы должны подумать, является философская идея дизайна Java vs Rust:

В Java программа «ориентирована на операторы», но в Rust все ориентировано на «выражения». Я знаю, что эти термины заставят вас запутаться. Ниже приведены определения того, что я имею в виду:

«Утверждение» — это код, который мы прописываем и изменяем свойства программы, например:

«Выражение», состоящее примерно из трех символов.

  • Должен оцениваться как значение
  • Может выполнять инструкции (или побочный эффект)
  • Может выполнять другие выражения

Теперь рассмотрим примеры расхождения

В Java мы всегда думаем об операторах, используя операторы для изменения состояния приложений. Но в Rust гуру больше думают о «выражении». Более того, они рассматривают Rust как язык «выражений».

Давайте взглянем на простую программу на Rust.

Это смертельно простая программа на Rust, но она многое говорит о Rust. Однако это не то же самое, что Java.

  • «а = 100;» является выражением. И () является типом данных b, потому что это выражение ничего не возвращает
  • () — это тип данных в Rust, это тип единиц измерения, я не знаю, что это такое, но в Java это похоже на «void». Это ничего не значит". Да… ничего
  • Компилятор пометит вас во время компиляции и сообщит, что вам не разрешено печатать () переменную void

1. Если {…} иначе {…}

В Java if{…} else {…} не может возвращать значение, но в Rust if{…} else {…} — это выражение. И он всегда возвращает либо (), либо реальное значение.

2. Зацикливание: не используйте while… или делайте…while

В Java у нас нет «цикла», но в Rust тоже можно увидеть:

  • Rust представляет новый способ зацикливания с помощью ключевого слова: loop {…}. Так что не удивляйтесь, если вы не увидите большую часть while {...} в коде на Rust.
  • loop {…} также является выражением и возвращает значение в операторе «break».

3. Интересно прийти на «матч». Вы видите «совпадение» повсюду в коде Rust. Гуру очень любят «матч»

В Java мы обычно делаем это, когда дело доходит до переключения… регистра. В Rust даже с любыми девчонками можно "матчаться" :) :)

Но в Rust у нас больше нет switch…case. Мы используем новый термин «матч»…

«Сопоставление» очень мощное средство в мире Rust, вы можете «сопоставить» с целым числом, строкой, структурой, перечислением, кортежем и т. д. Что бы у вас ни было, «матч» может помочь вам в большинстве случаев.

Заключительные заметки

Речь идет о точке с запятой;

Помните, что выражение всегда возвращает значение. если вы удалите точку с запятой в последнем операторе, то этот оператор является оператором возврата, иначе по умолчанию будет возвращено значение void()

Не только функция и замыкание возвращают значение в Rust, но и каждое выражение также возвращает значение в конце.

Спасибо за прочтение!