Ich habe Rust jetzt ein paar Wochen lang gelernt und habe meine Hand beim Fizzbuzz-Problem versucht. Code: fn fizzbuzz<'a>(n: usize) -> &'a str { match (n % 3, n % 5) { (0, 0) => "fizzbuzz", (0, _) => "fizz", (_, 0) => "buzz", _ => n.to_string().as_str(), } } Aus irgendeinem Grund bekomme ich einen Compilerfehler, den ich zu verstehen mühe. Fehler: Fehler[E0515]: kann keinen Wert zurückgeben, der sich auf temporären Wert bezieht --> src\main.rs:36:2 src\main.rs:==n % 3, n % 5) { 37:0, 0) => "fizzbuzz", 38: kann keinen Wert zurückgeben, der sich auf temporären Wert bezieht.
user
Es versucht, einen Verweis auf str, das ist ein Stack zugewiesen Objekt zurückzugeben, Ihre Optionen sind, um es zu boxen, oder verwendet einen Boxed-Typ wie String, oder beschäftigen sich mit Lebenszeiten (die Leute neigen dazu, in jedem Schritt zu vermeiden). Der einfachste Weg, um dies zu lösen ist, nur einen String anstatt a & str: fn fizzbuzz(n: usize) -> String { match (n % 3, n % 5) { (0, 0) => "fizzbuzz".to_string(), (0, _) => "fizz".to_string(), (_, 0) => "buzz".to_string(), _ => n.to_string() }
assistant
Danke, können Sie die erwartete Ausgabe simulieren?
user
usize -> String 0 -> fizzbuzz 1 -> 1 2 -> 2 3 -> fizz 4 -> 4 5 -> buzz 6 -> fizz 7 -> 7 8 -> 8 9 -> fizz 10 -> buzz 11 -> 11 12 -> fizz 13 -> 13 14 -> 14 Danach wiederholt sich das Ausgabemuster.
assistant
Können Sie einige Aufgaben für Rust Anfänger zu lösen?
user