Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmSrSV 241 of 373 menu
◀ ▶

Вектор структур в Rust

Несколько значений одного типа удобно держать в векторе. Если тип - структура, каждый элемент списка собирают отдельным литералом с теми же именами полей. Пустой вектор такого типа создают так же, как для чисел, с указанием типа элемента.

Готовый список записывают макросом с квадратными скобками: внутри через запятую идут литералы структур. К элементу обращаются по номеру, затем через точку берут нужное поле.

Сохраним двух пользователей в одном векторе и выведем имя второго:

struct User { name: &'static str, age: i32, }

Соберем вектор и выведем имя второго:

let users = vec![ User { name: "ann", age: 20 }, User { name: "bob", age: 22 }, ]; println!("{}", users[1].name);

На экране "bob". Номер элемента снова начинается с нуля, как у вектора чисел.

Изменяемый вектор дополняют новым литералом в конец знакомой командой. Поле у элемента по номеру меняют, если вектор и запись объявлены изменяемыми:

struct User { name: &'static str, age: i32, }

Дополним вектор и заменим возраст:

let mut users = vec![User { name: "ann", age: 20 }]; users.push(User { name: "bob", age: 22 }); users[0].age = 21; println!("{}", users.len());

Дана структура:

struct User { name: &'static str, age: i32, } let users = vec![ User { name: "ann", age: 20 }, User { name: "bob", age: 22 }, ];

Выведите возраст пользователя с номером 0.

Дана структура:

struct User { name: &'static str, age: i32, } let mut users = vec![User { name: "ann", age: 20 }];

Допишите в конец запись с именем "cy" и возрастом 19, затем выведите длину вектора.

Дана структура:

struct Score { points: i32, } let scores = vec![ Score { points: 5 }, Score { points: 8 }, Score { points: 3 }, ];

Сложите поля points всех элементов и выведите сумму.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить