Ce face String::truncate
truncate(n) păstrează primii n octeți și aruncă restul. Dacă n este mai mare decât lungimea, textul rămâne neschimbat. Dacă n cade în mijlocul unui caracter (de exemplu în ș), programul se oprește cu panică.
Ca să tai la un număr de litere, află poziția în octeți a literei cu char_indices().nth(n) și dă-o lui truncate. Capacitatea nu se schimbă.
Parametri
| Parametru | Descriere |
|---|---|
new_len |
Lungimea nouă, în octeți. Trebuie să fie pe granița unui caracter. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Tăiere în octeți
fn main() {
let mut s = String::from("Sibiu, Transilvania");
s.truncate(5);
println!("{s}");
s.truncate(100); // mai mare decât lungimea: nu se schimbă nimic
println!("{s}");
}
Rezultat
Sibiu
Sibiu
Exemplul 2: Rezumat de maximum 12 litere, sigur pe diacritice
fn scurteaza(text: &str, max_litere: usize) -> String {
let mut s = text.to_string();
if let Some((poz, _)) = s.char_indices().nth(max_litere) {
s.truncate(poz);
s.push('…');
}
s
}
fn main() {
println!("{}", scurteaza("Învățământul românesc în 2026", 12));
println!("{}", scurteaza("Scurt", 12));
}
Rezultat
Învățământul…
Scurt
Greșeli frecvente
"Iași".to_string().truncate(3)dă panică: octetul 3 este în mijlocul luiș. Verifică cuis_char_boundarysau calculează poziția dinchar_indices.
Comenzi înrudite
String::clear: Golește textul (lungime 0), dar păstrează memoria rezervată pentru refolosire.String::split_off: Taie String-ul în două la poziția at (octeți): returnează partea a doua, iar originalul păstrează prima parte.str::char_indices: Parcurge caracterele împreună cu poziția lor în octeți: perechi (usize, char).str::get: Taie textul sigur: get(a..b) returnează None în loc de panică; is_char_boundary verifică o poziție.