我有一个match声明,它返回一个&str:
match k {
SP_KEY_1 => "KEY_1",
SP_KEY_2 => "KEY_2",
SP_KEY_3 => "KEY_3",
SP_KEY_4 => "KEY_4",
SP_KEY_5 => "KEY_5",
SP_KEY_6 => "KEY_6",
_ => (k as char), // I want to convert this to &str
}.as_bytes()
Run Code Online (Sandbox Code Playgroud)
我试图char先将一个字符串转换为字符串,然后再将其切换为:
&(k as char).to_string()[..]
Run Code Online (Sandbox Code Playgroud)
但这给了我一生的错误:
error[E0597]: borrowed value does not live long enough
Run Code Online (Sandbox Code Playgroud)
说明这(k as char).to_string() 是一个临时值,从我能说的内容来看是有意义的,它会to_string()返回一个克隆.
我可以添加.to_string()到&str上面的每个文字来产生返回值String,但这看起来既丑陋(很多重复的代码),并且可能是低效的,因为to_string()克隆了原始的字符串切片.
具体问题是我将如何char进入a &str,但更广泛的问题是有更好的解决方案,这种情况通常是做什么的.