I've been learning Rust for a few weeks now, and have been trying my hand at the fizzbuzz problem.

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(),
	}
}

For some reason, I get a compiler error that I'm struggling to understand.

Error:
error[E0515]: cannot return value referencing temporary value
  --> src\main.rs:36:2
   |
36 | /     match (n % 3, n % 5) {
37 | |         (0, 0) => "fizzbuzz",
38 | |         (0, _) => "fizz",
39 | |         (_, 0) => "buzz",
40 | |         _ => n.to_string().as_str(),
   | |              ------------- temporary value created here
41 | |     }
   | |_____^ returns a value referencing data owned by the current function

For more information about this error, try `rustc --explain E0515`.

Could you please explain to my why this happens and how I can fix it?
ฉันได้เรียนรู้เรื่อง Rust มาสองสามสัปดาห์แล้ว และได้ลองใช้ปัญหา fizzbuzz แล้ว รหัส: fn fizzbuzz<'a>(n: usize) -> &'a str { match (n % 3, n % 5) { (0, 0) => "fizzbuzz", (0, _) => " fizz", (_, 0) => "buzz", _ => n.to_string().as_str(), } } ด้วยเหตุผลบางอย่าง ฉันได้รับข้อผิดพลาดของคอมไพเลอร์ที่ฉันพยายามทำความเข้าใจ ข้อผิดพลาด: ข้อผิดพลาด [E0515]: ไม่สามารถส่งคืนค่าที่อ้างอิงถึงค่าชั่วคราว --> src\main.rs:36:2 | 36 | / แมตช์ (n % 3, n % 5) { 37 | | (0, 0) => "ซ่าส์บัซ", 38 | | (0, _) => "ซ่า", 39 | | (_, 0) => "ฉวัดเฉวียน", 40 | | _ => n.to_string().as_str(), | | ------------- สร้างมูลค่าชั่วคราวที่นี่ 41 | | } | |_____^ ส่งกลับค่าที่อ้างอิงข้อมูลที่เป็นของฟังก์ชันปัจจุบัน หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดนี้ ให้ลอง `rustc --explain E0515` คุณช่วยอธิบายให้ฉันฟังได้ไหมว่าทำไมสิ่งนี้จึงเกิดขึ้นและฉันจะแก้ไขได้อย่างไร
spam lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor creativity violence