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