在 Vec<i8> 和 &str 之间转换
Converting between Vec<i8> and &str
我有一个 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());
有没有更简单的方法来实现这个目标?
您可能会发现转换为 String
更好,因为您可以将 &String
传递给需要 str
的函数。你可以把它缩短到大约
String::from_utf8(buffer.iter().map(|&c| c as u8).collect())
后面可以缩短为
String::from_utf8(mem::transmute(buffer))
我怀疑你能做得比这些更好。
我有一个 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());
有没有更简单的方法来实现这个目标?
您可能会发现转换为 String
更好,因为您可以将 &String
传递给需要 str
的函数。你可以把它缩短到大约
String::from_utf8(buffer.iter().map(|&c| c as u8).collect())
后面可以缩短为
String::from_utf8(mem::transmute(buffer))
我怀疑你能做得比这些更好。