Skip to content

Программирование_Лабораторная_работа_RUST_2 #9

@veskprogrammer

Description

@veskprogrammer

Лабораторная работа №2 - Ссылки, Ownership. Impl. Traits. Generics

Тема: Ссылки, Ownership. Impl. Traits. Generics

Задача 1

Постановка задачи

Создайте структуру Pair, которая хранит два значения одного типа T. Реализуйте методы для получения и изменения значений пары. Убедитесь, что использование ссылок и копирование данных работает корректно.

Математическая модель

Не требуется.

Список идентификаторов

Имя переменной Тип данных Описание
first T Первое значение пары
second T Второе значение пары

Код программы

struct Pair<T> {
    first: T,
    second: T,
}

impl<T> Pair<T> {
    fn new(first: T, second: T) -> Self {
        Pair { first, second }
    }

    fn get_first(&self) -> &T {
        &self.first
    }

    fn get_second(&self) -> &T {
        &self.second
    }

    fn set_first(&mut self, value: T) {
        self.first = value;
    }

    fn set_second(&mut self, value: T) {
        self.second = value;
    }
}

fn main() {
    let mut pair = Pair::new(10, 20);
    println!("Первое значение: {}", pair.get_first());
    println!("Второе значение: {}", pair.get_second());
    pair.set_first(30);
    pair.set_second(40);
    println!("Новые значения: {}, {}", pair.get_first(), pair.get_second());
}

Результаты работы программы

Первое значение: 10
Второе значение: 20
Новые значения: 30, 40

Задача 2

Постановка задачи

Определите трейт PrintInfo, который содержит метод print_info(&self). Реализуйте этот трейт для структуры Person, чтобы можно было вызвать метод print_info на объекте Person.

Математическая модель

Не требуется.

Список идентификаторов

Имя переменной Тип данных Описание
name String Имя человека
age u32 Возраст человека

Код программы

trait PrintInfo {
    fn print_info(&self);
}

struct Person {
    name: String,
    age: u32,
}

impl PrintInfo for Person {
    fn print_info(&self) {
        println!("Имя: {}, Возраст: {}", self.name, self.age);
    }
}

fn main() {
    let person = Person {
        name: String::from("Анна"),
        age: 25,
    };
    person.print_info();
}

Результаты работы программы

Имя: Георгий, Возраст: 18

Информация о студенте

Киселев Георгий, 1 курс, группа ИВТ-1.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions