Справка по языку

Синтаксис, типы, семантика, система эффектов, спецификации и встроенные функции.

Значения и типы

Простые типы: 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.