String::push_str în Rust

String Rust 1.0

Adaugă la finalul unui String un text (push_str) sau un singur caracter (push).

Sintaxă
pub fn push_str(&mut self, string: &str)
pub fn push(&mut self, ch: char)

Ce face String::push_str

push_str lipește un &str la sfârșitul textului; push lipește un singur char (scris cu apostrofuri: '!'). Ambele modifică textul pe loc, deci variabila trebuie să fie mut, și nu returnează nimic.

push_str primește un împrumut, deci textul adăugat rămâne utilizabil după. Pentru a adăuga un String, dă-i o referință: s.push_str(&alt). Pentru text formatat (numere, mai multe valori) se poate folosi și write! cu fmt::Write, sau +=, care face același lucru ca push_str.

Parametri

Parametru Descriere
string Textul adăugat (&str).
ch Caracterul adăugat (char). Poate fi orice caracter Unicode, de exemplu 'ș' sau '€'.

Ce returnează

Nimic (()). Textul original este modificat.

Exemple

Exemplul 1: push_str, push și +=

fn main() {
    let mut adresa = String::from("Str. Lăpușneanu");
    adresa.push_str(" nr. 12");
    adresa.push(',');
    adresa += " Iași";

    let tara = String::from("România");
    adresa.push_str(", ");
    adresa.push_str(&tara);      // împrumut: tara rămâne validă

    println!("{adresa}");
    println!("țara: {tara}");
}

Rezultat

Str. Lăpușneanu nr. 12, Iași, România
țara: România

Exemplul 2: Construirea unui text din caractere

Inversăm un cuvânt literă cu literă. chars().rev() parcurge caracterele de la coadă, iar push le adaugă pe rând.

fn main() {
    let cuvant = "țară";
    let mut invers = String::new();
    for c in cuvant.chars().rev() {
        invers.push(c);
    }
    println!("{cuvant} -> {invers}");
}

Rezultat

țară -> ăraț

Greșeli frecvente

  • Dai un char lui push_str sau un text lui push: s.push("a") nu compilează. "a" este &str, 'a' este char.
  • Dai un String direct: s.push_str(alt) dă expected `&str`, found `String`. Scrie &alt.

Comenzi înrudite

  • String::insert: Inserează un caracter (insert) sau un text (insert_str) la o poziție dată în octeți.
  • String::pop: Scoate ultimul caracter din String și îl returnează ca Option<char> (None dacă textul e gol).
  • fmt::Write: Trait-ul care permite scrierea de text formatat cu write!/writeln! direct într-un String sau alt destinatar de text.
  • String::new: Creează un String gol, fără să aloce memorie; textul se adaugă apoi cu push_str sau push.