Ich bin neu in Rust, so bin immer noch versucht, sich an das Speichermodell der Sprache zu gewöhnen.Rust Borrowing Problem mit einer Getter-Methode auf einer Struktur
Also ich renne in einen Fehler cannot move out of borrowed content.
, wenn ich eine -Methode auf einer Struktur erstellen. Ich konnte nicht wirklich herausfinden, warum es so ist, aber es scheint sich auf eine Eigenschaft auf einem Enum zu beziehen.
enum Gender{
Male,
Female,
}
impl Default for Gender {
fn default() -> Gender { Gender::Female }
}
impl Clone for Gender {
fn clone(&self) -> Gender { *self }
}
#[derive(Default, Builder, Debug)]
#[builder(setter(into))]
struct ProfessorGroup {
name: &'static str,
gender:Gender,
level:Levels,
attrition_rate:f64,
promotion_rate:f64,
hiring_rate:f64,
current_number:u32,
}
impl ProfessorGroup {
pub fn get_gender(&self) -> Gender { self.gender }
pub fn get_name(&self) -> &'static str {self.name}
pub fn get_attrition_rate(&self) -> f64 {self.attrition_rate}
Die Fehlermeldung erhalte ich muss mit dem Enum
für Geschlecht zu tun.
error[E0507]: cannot move out of borrowed content
--> src/Actors/ProfessorGroups.rs:42:33
42 | pub fn get_gender(&self) -> Gender { self.gender }
| ^^^^ cannot move out of borrowed content
error[E0507]: cannot move out of borrowed content
--> src/Actors/ProfessorGroups.rs:27:33
|
27 | fn clone(&self) -> Levels { *self }
| ^^^^^ cannot move out of borrowed content
Ich habe darauf geachtet, einen Verweis auf sich selbst zu nehmen. Ich habe auch keine Aufgabe in diesen Funktionen gemacht - nur getter Funktionen - aber irgendwie wird das Ausleihen kaputt gemacht.
Ah das macht Sinn. Ich verstehe, warum die Getter-Funktion immer noch als Kredit betrachtet wurde. Danke für den Tipp auf die Copy, Clone Traits auch. Das ist so ein nützlicher Tipp, denn es scheint, als würde man Wert nach Wert anstatt nach Referenz weitergeben. Ich schätze auch die klare Erklärung des Speichermodells in Rust. – krishnab