Сильные стороны
Некоторые уникальные преимущества Rust:
-
Безопасность памяти на этапе компиляции — целые классы ошибок работы с памятью предотвращаются во время компиляции
- Нет неинициализированных переменных.
- Нет двойных освобождений.
- Нет использования-после-освобождения (use-after-free).
- Нет
NULLуказателей. - Нет забытых заблокированных мьютексов.
- Нет гонок данных между потоками.
- Нет инвалидации итераторов.
-
Отсутствие неопределённого поведения во время выполнения — то, что делает каждая инструкция Rust, никогда не остаётся неопределённым
- Проверка границ массива.
- Переполнение целых чисел определено (паника или циклическое переполнение).
-
Современные возможности языка — такие же выразительные и удобные, как в языках высокого уровня
- Перечисления и сопоставление с образцом.
- Обобщения (generics).
- Нет накладных расходов для FFI.
- Абстракции с нулевой стоимостью (zero-cost abstractions).
- Отличные ошибки компилятора.
- Встроенный менеджер зависимостей.
- Встроенная поддержка тестирования.
- Великолепная поддержка протокола языкового сервера (LSP).
Не тратьте на это много времени. Все эти пункты будут разобраны подробнее позже.
Обязательно спросите учащихся, с какими языками у них есть опыт работы. В зависимости от ответа вы можете подчеркнуть различные особенности Rust:
-
Опыт работы с C или C++: Rust устраняет целый класс ошибок времени выполнения с помощью анализатора заимствований. Вы получаете производительность, как в C и C++, не сталкиваясь с проблемами безопасности памяти. Кроме того, вы получаете современный язык с такими конструкциями, как сопоставление с образцом и встроенное управление зависимостями.
-
Опыт работы с Java, Go, Python, JavaScript…: вы получаете ту же безопасность памяти, что и в этих языках, плюс похожее ощущение языка высокого уровня. Кроме того, вы получаете быструю и предсказуемую производительность, как у C и C++ (без сборщика мусора), а также доступ к низкоуровневому оборудованию (если понадобится).