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;
}
}
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 и демонстрируем использование методов для чтения и изменения полей.