Справка по языку
Синтаксис, типы, семантика, система эффектов, спецификации и встроенные функции.
Значения и типы
Простые типы: i64, f64, bool, str. Целые литералы — десятичные, шестнадцатеричные (0x), двоичные (0b) и восьмеричные (0o). Тип выводится из литерала. [T] — сахар для Vec<T>.
Функции
Функции объявляются через fn. Параметры — имя: тип. Тип возврата после ->. У каждой программы есть main. Функция без тела — предварительное объявление.
Управление потоком
if/else, while и for-in по диапазону. Точки с запятой необязательны. Ранний return — обычный путь ошибки.
Структуры, impl, дженерики и трейты
Структуры — составные типы с C-совместимой раскладкой. impl вешает методы. В 0.9 появились дженерик-функции и структуры (мономорфизация) и traits/impl.
Перечисления и сопоставление с образцом
Enum — помеченные объединения. match исчерпывающий: компилятор проверяет все случаи. _ — маска для остального.
Спецификации — сначала что, потом как
spec говорит, ЧТО должна делать функция. Реализация следует за ним. --verify статически доказывает или опровергает requires/ensures — с контрпримером или честным UNKNOWN.
Эффекты — побочные эффекты в типе
Эффекты — измерения типов. Необработанный эффект — ошибка компиляции. В 0.9 есть payload эффектов (!E(T), raise/catch) и !Overflow как типовой эффект: не указали — утверждаете арифметическую безопасность.
Параллельность — go/join с !Par
go запускает OS-поток; join ждёт результат. !Par помечает параллельное исполнение. Скрытых пулов нет. --verify рассуждает о fork–join и протоколах handle.