Ce face String::into_bytes
into_bytes consumă textul (după apel nu mai poți folosi variabila) și îți dă vectorul de octeți din spatele lui, fără să copieze nimic. Este util când trimiți textul la o funcție care lucrează cu octeți (fișiere, rețea, sume de control).
Dacă vrei doar să citești octeții și să păstrezi textul, folosește as_bytes(), care dă un &[u8] împrumutat. Drumul invers este String::from_utf8.
Ce returnează
Un Vec<u8> cu octeții UTF-8 ai textului.
Exemple
Exemplul 1: Octeții unui cuvânt cu diacritice
ț este codificat în UTF-8 pe doi octeți: 200 și 155.
fn main() {
let s = String::from("bț");
let octeti = s.into_bytes();
println!("{octeti:?}");
println!("în hex: {:02X?}", octeti);
}
Rezultat
[98, 200, 155]
în hex: [62, C8, 9B]
Exemplul 2: Dus și întors
fn main() {
let original = String::from("Piatra Neamț");
let mut octeti = original.into_bytes();
octeti.extend_from_slice(b" 2026");
let inapoi = String::from_utf8(octeti).unwrap();
println!("{inapoi}");
}
Rezultat
Piatra Neamț 2026
Greșeli frecvente
- Folosești variabila după
into_bytes:borrow of moved value. Dacă mai ai nevoie de text, foloseșteas_bytes().
Comenzi înrudite
str::bytes: Accesul la octeții UTF-8 ai textului: bytes() ca iterator de u8, as_bytes() ca felie &[u8].String::from_utf8: Creează un String din octeți: from_utf8 verifică UTF-8 și dă eroare; from_utf8_lossy înlocuiește octeții greșiți cu �.String::len: Lungimea textului în OCTEȚI (nu în litere) și verificarea dacă textul e gol. Pentru litere: chars().count().