我有一个返回
我试过先将一个
&str
的 match
语句: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()
我试过先将一个
char
转换为字符串,然后对其进行切片:&(k as char).to_string()[..]
但是这给我带来了终身错误:
error[E0597]: borrowed value does not live long enough
说 (k as char).to_string()
是一个临时值,这是有道理的,因为根据我的理解,to_string()
返回了一份克隆。
我可以在每个上面的 &str
字面量后添加 .to_string()
以使返回值为 String
,但那看起来很丑陋(有很多重复的代码),而且可能效率低下,因为 to_string()
克隆了原始字符串片段。
具体问题是如何将 char
转换为 &str
,但更广泛的问题是是否有更好的解决方案,在这种情况下通常如何处理。
k
是什么类型?它从哪里来的? - ljedrzCow<'static, str>
;Owned
变体将存储一个String
。 - Stefan&format!("{}", k as char)
- bob