Ce face String::pop
pop elimină ultimul caracter, oricâți octeți ar avea (ș are 2 octeți, dar este scos întreg). Returnează Some(caracter) sau None dacă textul era deja gol, deci nu oprește niciodată programul.
Este perechea lui push. Pentru a scoate mai multe caractere de la final folosește truncate; pentru a scoate de la început sau din mijloc, remove sau drain.
Ce returnează
Option<char>: Some(c) cu caracterul scos sau None pentru un text gol.
Exemple
Exemplul 1: Scoaterea ultimei litere
fn main() {
let mut s = String::from("Arad;");
let scos = s.pop();
println!("scos: {:?}, rămâne: {s}", scos);
let mut d = String::from("Bacău");
println!("scos: {:?}, rămâne: {d}", d.pop());
println!("scos: {:?}, rămâne: {d}", d.pop());
}
Rezultat
scos: Some(';'), rămâne: Arad
scos: Some('u'), rămâne: Bacă
scos: Some('ă'), rămâne: Bac
Exemplul 2: Golirea textului cu while let
Bucla se oprește singură când pop returnează None.
fn main() {
let mut s = String::from("abc");
while let Some(c) = s.pop() {
println!("am scos '{c}', a rămas {:?}", s);
}
println!("pop pe text gol: {:?}", s.pop());
}
Rezultat
am scos 'c', a rămas "ab"
am scos 'b', a rămas "a"
am scos 'a', a rămas ""
pop pe text gol: None
Greșeli frecvente
- Folosești
s.pop().unwrap()pe un text care poate fi gol: programul se oprește cu panică. Verifică rezultatul cuif let Some(c).
Comenzi înrudite
String::push_str: Adaugă la finalul unui String un text (push_str) sau un singur caracter (push).String::truncate: Scurtează textul la primii new_len octeți; nu face nimic dacă textul e deja mai scurt.String::remove: Scoate caracterul de la poziția idx (în octeți) și îl returnează; restul textului se mută la stânga.String::drain: Scoate din String bucata dintr-un interval de octeți și o returnează ca iterator de caractere.