Avatar ·

如何在 Rust 中互相转换 String、&str、Vec<u8> 和 &[u8]?

大家好!我最近开始学习 Rust,经常在字符串和字节数组之间的转换中感到困惑。问题在于 Rust 中有不同的字符串类型:String、&str,以及字节类型:Vec<u8> 和 &[u8]。

例如,我写了一个简单的程序来读取文件、处理字符串并输出结果。但我总是遇到编译错误,因为我不明白如何正确地将一种类型转换为另一种类型。

use std::fs;

fn main() {
    let data: Vec<u8> = fs::read("example.txt").unwrap();
    // 如何将 Vec<u8> 转换为 String?
    let text: String = ???;
    
    // 然后我需要将字符串的一部分传递给一个接受 &str 的函数
    process_part(&text);
    
    // 然后我需要将结果再次转换为 Vec<u8> 以便写入文件
    let output: Vec<u8> = ???;
    fs::write("output.txt", output);
}