Правила форматирования системы типов
§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;