Sto scrivendo un modello getter/impostazione molto semplice che vorrei iniziare a utilizzare in Rust per motivi di semplicità utilizzando struct
e impl
.Proprietà getter/setter di scrittura in 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);
}
Quando si esegue questo snippet ottengo il seguente errore.
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`.
Qualcuno può segnalare l'errore da quando sono molto nuovo a Rust?
Anche i suggerimenti su come scrivere questo snippet potrebbero essere accettati. Sono sempre alla ricerca di una leggibilità più facile/veloce.
Perché pensi di aver bisogno di getter e setter? Perché non 'struct Person {pub first_name: String, pub last_name: String,}' che è molto più semplice? –