在Vec <i8>和&amp; str之间转换

时间:2016-08-08 22:08:56

标签: string vector type-conversion rust slice

我有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());

有没有更简单的方法来实现这个目标?

1 个答案:

答案 0 :(得分:2)

您可能会发现转换为String的效果更好,因为您可以将&String传递给期望str的函数。你可以将它缩短到大致

String::from_utf8(buffer.iter().map(|&c| c as u8).collect())

,后者可以缩短为

String::from_utf8(mem::transmute(buffer))

我怀疑你能做得比这些好。