str::get în Rust

Taie textul sigur: get(a..b) returnează None în loc de panică; is_char_boundary verifică o poziție.

Sintaxă
pub fn get<I: SliceIndex<str>>(&self, i: I) -> Option<&I::Output>
pub fn is_char_boundary(&self, index: usize) -> bool

Ce face str::get

s.get(a..b) face același lucru ca &s[a..b], dar dacă intervalul iese din text sau taie o literă în două, returnează None în loc să oprească programul. Acceptă toate formele de interval: ..3, 2.., 1..=4.

is_char_boundary(i) spune dacă octetul i este începutul unui caracter (sau exact finalul textului). Pozițiile 0 și len() sunt mereu granițe; o poziție mai mare decât len() dă false. Este utilă înainte de insert, truncate sau split_at cu poziții calculate.

Parametri

Parametru Descriere
i Intervalul de octeți (a..b, ..b, a..).
index Poziția în octeți verificată.

Ce returnează

get: Option<&str>. is_char_boundary: bool.

Exemple

Exemplul 1: get în loc de panică

fn main() {
    let s = "Iași";
    println!("{:?}", s.get(0..2));
    println!("{:?}", s.get(0..3));    // taie litera ș
    println!("{:?}", s.get(0..4));
    println!("{:?}", s.get(2..10));   // în afara textului
}

Rezultat

Some("Ia")
None
Some("Iaș")
None

Exemplul 2: Granițele caracterelor

fn main() {
    let s = "ață";
    for i in 0..=s.len() + 1 {
        println!("octetul {i}: graniță = {}", s.is_char_boundary(i));
    }
}

Rezultat

octetul 0: graniță = true
octetul 1: graniță = true
octetul 2: graniță = false
octetul 3: graniță = true
octetul 4: graniță = false
octetul 5: graniță = true
octetul 6: graniță = false

Greșeli frecvente

  • Folosești &s[a..b] cu poziții venite de la utilizator. Folosește get și tratează None.

Comenzi înrudite

  • str: Tipul pentru o bucată de text UTF-8 împrumutată (&str): literalii, părți din String, parametrii de funcții.
  • str::char_indices: Parcurge caracterele împreună cu poziția lor în octeți: perechi (usize, char).
  • String::truncate: Scurtează textul la primii new_len octeți; nu face nimic dacă textul e deja mai scurt.
  • String::insert: Inserează un caracter (insert) sau un text (insert_str) la o poziție dată în octeți.