String::truncate în Rust

String Rust 1.0

Scurtează textul la primii new_len octeți; nu face nimic dacă textul e deja mai scurt.

Sintaxă
pub fn truncate(&mut self, new_len: usize)

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ă cu is_char_boundary sau calculează poziția din char_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.