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
charluipush_strsau un text luipush:s.push("a")nu compilează."a"este&str,'a'estechar. - Dai un
Stringdirect: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.