Vec<i8> 和 &str 之间的转换

Mac*_*cki 5 string vector type-conversion slice rust

我有一个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())
Run Code Online (Sandbox Code Playgroud)

// transmute makes me uncomfortable
str::from_utf8(mem::transmute::<Vec<i8>, Vec<u8>>(buffer).as_slice());
Run Code Online (Sandbox Code Playgroud)

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

Vee*_*rac 5

您可能会发现转换为 aString更好,因为您可以将&Strings 传递给需要 s 的函数str。您可以将其缩短为大约

String::from_utf8(buffer.iter().map(|&c| c as u8).collect())
Run Code Online (Sandbox Code Playgroud)

后者可以缩短为

String::from_utf8(mem::transmute(buffer))
Run Code Online (Sandbox Code Playgroud)

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