我有Vec<i8>
我需要读作&str
。现在我发现了两种方法,这两种方式让我感到不快。
// Quite complex for something this simple
str::from_utf8(buffer.into_iter().map(|c| c as u8).collect::<Vec<u8>>().as_slice())
和
// transmute makes me uncomfortable
str::from_utf8(mem::transmute::<Vec<i8>, Vec<u8>>(buffer).as_slice());
有没有更简单的方法来实现这个目标?
答案 0 :(得分:2)
您可能会发现转换为String
的效果更好,因为您可以将&String
传递给期望str
的函数。你可以将它缩短到大致
String::from_utf8(buffer.iter().map(|&c| c as u8).collect())
,后者可以缩短为
String::from_utf8(mem::transmute(buffer))
我怀疑你能做得比这些好。