Avatar ·

Como converter String, &str, Vec<u8> e &[u8] entre si em Rust?

Olá a todos! Comecei a estudar Rust recentemente e estou constantemente confuso com as conversões entre strings e arrays de bytes. O problema surge porque em Rust existem diferentes tipos para strings: String, &str, e para bytes — Vec<u8> e &[u8].

Por exemplo, estou escrevendo um programa simples que lê um arquivo, processa strings e exibe o resultado. Mas estou recebendo constantemente erros de compilação porque não consigo entender como converter corretamente um tipo em outro.

use std::fs;

fn main() {
    let data: Vec<u8> = fs::read("example.txt").unwrap();
    // Como converter Vec<u8> em String?
    let text: String = ???;
    
    // Depois preciso passar parte da string para uma função que aceita &