pub struct Character {
name: String,
hp: i32,
level: i32,
xp: i32,
xp_needed: i32,
gold: i32
}
impl Character {
pub fn new(name: String) -> Character {
let mut rng = thread_rng();
let hp: i32 = rng.gen_range(12, 75);
let gold: i32 = rng.gen_range(10, 50);
Character { name: name, hp: hp, level: 1, xp: 0, gold: gold, xp_needed: 100 }
}
pub fn get_name(&self) -> String {
self.name
}
// ...
}
Wie genau breche ich hier die Regeln?Kann nicht ausgeliehenen Inhalt in Rust bewegen
Auf einem hohen Niveau ist dies für Rust gegen den Strich. Sie können das Eigentum an etwas, das Sie geliehen haben, nicht übertragen, weil Sie es nicht besitzen.
Um nicht wahr? Ich habe andere Funktionen wie:
pub fn get_hp(&self) -> i32 {
self.hp
}
Und das funktioniert ganz gut.
|
23 | self.name
| ^^^^ cannot move out of borrowed content
error: aborting due to previous error
Was ist los? Was ist der geeignete Ansatz, um den Charakternamen zurückzugeben? Warum funktioniert die get_hp
Methode, aber nicht get_name
?
Es gibt [* so viele * andere Fragen für die gleiche Fehlermeldung] (http://stackoverflow.com/search?q=%5Brust%5D+move+out+of+borrowed+content+is % 3Aq). 'i32' ist' Copy', 'String' ist nicht. Du ** hast kein 'Selbst ', es ist geliehen (' & Selbst'). – Shepmaster
@Shempmaster Das beantwortet meine Frage nicht oder gibt mir eine Lösung. – TheWebs
TheWebs was @Shepmaster bedeutet ist, dass Sie einige Mühe in Ihrer Frage zeigen sollten, und wenn es andere Fragen gibt, die Ihren ähnlich sind, erklären Sie, warum ihre Antworten nicht auf Ihr Problem zutreffen. – mcarton