Второе имя для существующего типа в Rust
Запись type UserId = i32 дает второе
имя тому же
целому. Для компилятора UserId и
i32 - один тип: переменную одного
вида можно передать туда, где ждут другой.
Это не создает отдельную проверку между
разными именами. Если функция принимает
UserId, в нее подойдет обычная
переменная i32 без обертки и без
доступа к полю.
Сравним объявление второго имени и вызов функции с обычным числом:
type UserId = i32;
fn take(id: UserId) {
let _ = id;
}
fn main() {
let n: i32 = 7;
take(n);
println!("{}", n);
}
Дан следующий код:
fn main() {
let raw: i32 = 15;
println!("{}", raw);
}
Добавьте второе имя Score для
i32, объявите raw с этим
именем и выведите значение как раньше.
Даны фрагменты:
fn send(code: ErrorCode) {
let _ = code;
}
fn main() {
let n: i32 = 3;
}
Запишите второе имя ErrorCode для
i32, передайте n в
send и убедитесь, что программа
собирается.
Дано число:
let num = 42;
Объявите второе имя Port для
i32, сохраните литерал в
переменной с этим именем и выведите его
из main.