Skip to content

Правила форматирования системы типов


§9 Аннотации типов

§9.1 Аннотации типов переменных. Аннотации типов используют формат : Type, после двоеточия пробел.

// ✅ Правильно
let x: Int = 1;

// ❌ Неправильно
let x:Int = 1;
let x : Int = 1;

§9.2 Типы параметров функции. Между именем параметра и типом используется :.

// ✅ Правильно
fn foo(x: Int, y: String) { ... }

// ❌ Неправильно
fn foo(x:Int, y:String) { ... }

§9.3 Обобщённые параметры. Обобщённые параметры используют формат (T: Constraint).

// ✅ Правильно
fn foo<T: Clone>(x: T) { ... }

// ❌ Неправильно
fn foo <T:Clone> (x: T) { ... }

§15 Ссылки и заимствования

§15.1 Неизменяемые ссылки. Используется формат &expr.

// ✅ Правильно
let x = &value;

// ❌ Неправильно
let x = & value;

§15.2 Изменяемые ссылки. Используется формат &mut expr.

// ✅ Правильно
let x = &mut value;

// ❌ Неправильно
let x = &mut  value;
let x = & mut value;

§15.3 Ссылки в типах. Ссылки в типах используют формат &Type или &mut Type.

// ✅ Правильно
fn foo(x: &Int) { ... }
fn bar(x: &mut Int) { ... }

§16 Преобразования типов

§16.1 Преобразование as. Используется формат expr as Type.

// ✅ Правильно
let x = value as Int;

// ❌ Неправильно
let x = value as Int;
let x = value  as  Int;

§17 Ключевое слово Ref

§17.1 Формат ref. Ключевое слово ref отделяется от выражения пробелом.

// ✅ Правильно
let x = ref value;
let y = ref obj;

// ❌ Неправильно
let x = refvalue;  // отсутствует пробел
let y = ref  value;  // лишний пробел

§17.2 Семантика ref. ref создаёт копию Arc (атомарный подсчёт ссылок).

// Создание разделяемой ссылки
let shared = ref original;