println! leiht oder nimmt Eigentum an einer Variable in Rust?
Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen und versuche, das Ownership-System zu verstehen. Ich habe diesen einfachen Code:\n\n```rust\nfn main() {\n let s = String::from("Hello");\n println!("{}", s);\n println!("{}", s); // Zweiter Versuch, auszugeben\n}\n```\n\nIch erwartete, dass nach dem ersten `println!` die Variable `s` in das Makro verschoben (move) wird und ungültig wird, wie es passiert, wenn man sie an eine Funktion übergibt, die `String` by value nimmt. Aber der Code funktioniert! Warum?\n\nIch habe gelesen, dass `println!` ein Makro ist, keine Funktion. Vielleicht verhält es sich anders? Wenn ich schreiben würde:\n\n```rust\nfn print_string(s: String) {\n println!("{}", s);\n}\n\nfn main() {\n let s = String::from("Hello");\n print_string(s);\n print_string(s); // Fehler: use of moved value\n}\n```\n\n— dann würde
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen