Создание объекта
Создание объекта
Новый объект создаётся через ключевое слово struct
.
struct Worker { name: String, } fn main() { let manager = Worker { name: "Мария".to_string() }; let programming = Worker { name: "Дмитрий".to_string() }; println!("Менеджер: {}", manager.name); println!("Программист: {}", programming.name); }
В результате будет выведено следующее:
Менеджер: Мария Программист: Дмитрий
Создание метода
Методы для объекта создаются через ключевое слово impl
.
struct Worker { name: String, } impl Worker { fn say_hi(&self) -> String { return "Привет ".to_string() + &self.name.to_string(); } } fn main() { let manager = Worker { name: "Мария".to_string() }; let programming = Worker { name: "Дмитрий".to_string() }; println!("{}", manager.say_hi()); println!("{}", programming.say_hi()); }
Стоит обратить внимание, что методы надо называть в формате «method_name», иначе Rust вернёт предупреждение «method should have a snake case name».
В результате будет выведено следующее:
Привет Мария Привет Дмитрий
Изменение свойства объекта
По умолчанию, свойства объекта не изменяемы.
struct Point { x: i32, y: i32, } fn main() { let point = Point {x: 5, y: 10} // попытка изменить свойство point.x = 10; // ошибка — cannot assign to immutable field `point.x` }
Чтобы можно было изменить свойство объекта, надо добавить ключевое слово mut
.
struct Point { x: i32, y: i32, } fn main() { let mut point = Point {x: 5, y: 10} // попытка изменить свойство point.x = 10; // point.x теперь равен «10» }