Tôi đang viết một mô hình thiết lập/khởi động rất đơn giản mà tôi muốn bắt đầu sử dụng trong Rust vì các lý do đơn giản khi sử dụng struct
và impl
.Viết thuộc tính getter/setter trong Rust
struct Person {
firstName: String,
lastName: String,
}
impl Person {
fn get_first_name(&mut self) -> String { return self.firstName; }
fn get_last_name(&mut self) -> String { return self.lastName; }
fn set_first_name(&mut self, x: String) { self.firstName = x; }
fn set_last_name(&mut self, x: String) { self.lastName = x; }
fn default() -> Person {
Person {firstName: "".to_string(), lastName: "".to_string()}
}
}
fn main() {
let mut my_person : Person = Person{ ..Person::default() };
my_person.set_first_name("John".to_string());
my_person.set_last_name("Doe".to_string());
println!("{}", my_person.firstName);
println!("{}", my_person.lastName);
}
Khi tôi chạy đoạn mã này, tôi nhận được lỗi sau.
src\main.rs:7:53: 7:57 error: cannot move out of borrowed content [E0507]
src\main.rs:7 fn get_first_name(&mut self) -> String { return self.firstName; }
^~~~
src\main.rs:8:53: 8:57 error: cannot move out of borrowed content [E0507]
src\main.rs:8 fn get_last_name(&mut self) -> String { return self.lastName; }
^~~~
error: aborting due to 2 previous errors
Could not compile `sandbox`.
Ai đó có thể chỉ ra nhầm lẫn với tôi vì tôi rất mới với Rust?
Các mẹo viết đoạn mã này tốt hơn cũng sẽ được chấp nhận. Tôi luôn tìm kiếm khả năng đọc dễ dàng hơn/nhanh hơn.
Tại sao bạn nghĩ rằng bạn cần getters và setters? Tại sao không 'struct Person {pub first_name: String, pub last_name: String,}' mà là khá đơn giản? –