char::to_uppercase în Rust

Transformă un caracter în literă mare sau mică; returnează un iterator, pentru că rezultatul poate avea mai multe caractere.

Sintaxă
pub fn to_uppercase(self) -> ToUppercase
pub fn to_lowercase(self) -> ToLowercase

Ce face char::to_uppercase

În Unicode, unele litere mari sunt formate din mai multe caractere: ß devine SS. De aceea to_uppercase() nu returnează un char, ci un iterator de caractere. Îl poți afișa direct (implementează Display), îl poți strânge într-un String cu collect() sau poți lua primul caracter cu next().

Pentru literele românești rezultatul este mereu un singur caracter: ș → Ș, ț → Ț. Dacă știi că lucrezi doar cu ASCII, to_ascii_uppercase() returnează direct un char.

Ce returnează

Un iterator (ToUppercase / ToLowercase) cu unul până la trei caractere.

Exemple

Exemplul 1: Iteratorul și cum îl folosești

fn main() {
    let c = 'ș';
    println!("{}", c.to_uppercase());                     // afișare directă
    let s: String = 'ß'.to_uppercase().collect();
    println!("ß -> {s}");
    let m: char = 'Ț'.to_lowercase().next().unwrap();
    println!("Ț -> {m}");
    println!("ascii: {}", 'q'.to_ascii_uppercase());
}

Rezultat

Ș
ß -> SS
Ț -> ț
ascii: Q

Exemplul 2: Prima literă mare

fn capitalizeaza(cuvant: &str) -> String {
    let mut litere = cuvant.chars();
    match litere.next() {
        Some(prima) => prima.to_uppercase().chain(litere).collect(),
        None => String::new(),
    }
}

fn main() {
    for c in ["ștefan", "țara", "iași", ""] {
        println!("{:?}", capitalizeaza(c));
    }
}

Rezultat

"Ștefan"
"Țara"
"Iași"
""

Greșeli frecvente

  • Scrii let m: char = c.to_uppercase();: expected `char`, found `ToUppercase`. Adaugă .next().unwrap() sau strânge în String.

Comenzi înrudite

  • str::to_uppercase: Returnează un String nou cu toate literele mari (to_uppercase) sau mici (to_lowercase), după regulile Unicode.
  • char::is_uppercase: Verifică dacă un caracter este literă mare (is_uppercase) sau literă mică (is_lowercase).
  • str::to_ascii_uppercase: Returnează o copie în care doar literele ASCII a-z devin mari; diacriticele și alte caractere rămân neschimbate.