April 3, 2023

Как выражаются классы на языке Rust?

В Rust, вместо классов, как в Java, используются структуры (struct) и реализации (impl). Структуры используются для определения полей, а реализации предоставляют методы для работы с ними. Это позволяет достичь аналогичного функционала и инкапсуляции, как и в объектно-ориентированных языках программирования. Вот пример определения класса на Java и его аналога на Rust:

Код на java:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Код на Rust:

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

impl Person {
    fn new(name: String, age: i32) -> Person {
        Person { name, age }
    }
    fn get_name(&self) -> &String {
        &self.name
    }

    fn set_name(&mut self, name: String) {
        self.name = name;
    }

    fn get_age(&self) -> i32 {
        self.age
    }

    fn set_age(&mut self, age: i32) {
        self.age = age;
    }
}

fn main() {
    let mut person = Person::new("Alice".to_string(), 30);
    println!("Name: {}", person.get_name());
    println!("Age: {}", person.get_age());

    person.set_name("Bob".to_string());
    person.set_age(35);

    println!("Updated name: {}", person.get_name());
    println!("Updated age: {}", person.get_age());
}

В этом примере на Rust мы определяем структуру Person с полями name и age, а также реализацию Person с методами для работы с полями структуры. Затем в функции main мы создаем экземпляр структуры Person и демонстрируем использование методов для чтения и изменения полей.