Езикова справка

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

Стойности и типове

Прости типове: 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-и и съпоставяне по образец

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-ите.