Литерал структуры в Rust
Значение структуры собирают литералом в фигурных скобках. После имени типа перечисляют поля: у каждого имя, двоеточие и значение. Имена полей в литерале обязательны, пропустить поле нельзя.
Порядок полей в литерале может быть любым. Компилятор сопоставляет значения по именам, а не по месту в списке. Так проще читать запись, когда полей несколько.
Классический порядок совпадает с объявлением типа:
struct User {
name: &'static str,
age: i32,
}
Соберем литерал в том же порядке:
let user = User { name: "ann", age: 20 };
Тот же набор полей можно записать в другом порядке - тип и смысл не меняются:
struct User {
name: &'static str,
age: i32,
}
Соберем литерал в другом порядке полей:
let user = User { age: 21, name: "bob" };
Дана структура:
struct User {
name: &'static str,
age: i32,
}
let user = User { name: "ann", age: 20 };
Перепишите литерал так, чтобы сначала шло
поле age, затем name.
Дана структура:
struct Tag {
code: i32,
label: &'static str,
}
let tag = Tag { code: 5, label: "ok" };
Соберите вторую переменную copy с теми
же значениями, но поля перечислите в обратном
порядке.
Дана структура:
struct User {
name: &'static str,
age: i32,
}
Скажите, можно ли записать литерал только
с полем name, не указывая age.