【问题标题】:Converting between Vec<i8> and &str在 Vec<i8> 和 &str 之间转换
【发布时间】:2016-12-14 19:43:44
【问题描述】:

我有一个Vec&lt;i8&gt;,我需要读作&amp;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 vector type-conversion rust slice


    【解决方案1】:

    您可能会发现转换为String 更好,因为您可以将&amp;Strings 传递给期望strs 的函数。您可以将其缩短为大致

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

    后者可以缩短为just

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多