Menu
Coddy logo textTech

Доступ к полям структуры

Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 22 из 66.

После того как вы создали экземпляр структуры, вам понадобится способ извлечь хранящиеся в нем значения. Rust использует точечную нотацию для доступа к отдельным полям структуры.

Синтаксис прост: вы пишете имя экземпляра структуры, затем точку, а затем имя поля, к которому хотите получить доступ:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

Эта точечная нотация работает точно так же, как доступ к свойствам в других языках программирования. Вы можете использовать полученные значения в выражениях, присваивать их переменным или передавать в функции — они ведут себя точно так же, как и любое другое значение этого типа.

challenge icon

Задание

Легко

Вы получите три входных значения: название модели автомобиля, год выпуска автомобиля (в виде целого числа) и его пробег (в виде целого числа). Определите структуру Car с тремя полями: model типа String, year типа i32 и mileage типа i32. Создайте экземпляр этой структуры, используя входные значения, затем обратитесь к каждому полю и выведите его значение.

Требования:

  • Определите структуру Car с полями: model: String, year: i32 и mileage: i32
  • Прочитайте первое входное значение как модель автомобиля
  • Прочитайте второе входное значение и преобразуйте его в i32 для года выпуска
  • Прочитайте третье входное значение и преобразуйте его в i32 для пробега
  • Создайте экземпляр структуры Car с этими значениями
  • Используйте точечную нотацию для доступа к каждому полю и выведите информацию об автомобиле в точном формате, указанном ниже

Ввод:

  • Первая строка: Модель автомобиля (например, Tesla Model 3)
  • Вторая строка: Год выпуска как целое число (например, 2022)
  • Третья строка: Пробег как целое число (например, 15000)

Вывод:

  • Первая строка: Car: [model]
  • Вторая строка: Year: [year]
  • Третья строка: Mileage: [mileage] km

Шпаргалка

Для доступа к полям экземпляра структуры используйте точечную нотацию:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

Синтаксис следующий: instance_name.field_name. Полученные значения можно использовать в выражениях, присваивать переменным или передавать в функции.

Попробуйте сами

use std::io;

// TODO: Определите здесь структуру Car с полями: model, year и mileage

fn main() {
    // Чтение модели автомобиля
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // Чтение года
    let mut year_input = String::new();
    io::stdin().read_line(&mut year_input).expect("Failed to read line");
    let year: i32 = year_input.trim().parse().expect("Invalid year");
    
    // Чтение пробега
    let mut mileage_input = String::new();
    io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
    let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
    
    // TODO: Создайте экземпляр структуры Car, используя введенные значения
    
    // TODO: Обратитесь к каждому полю и выведите его в требуемом формате
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow