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;