Ce face u8::is_ascii_digit
b.is_ascii_digit() returnează true doar pentru octeții b'0' … b'9' (valorile 48-57). Familia completă: is_ascii_alphabetic (litere a-z, A-Z), is_ascii_alphanumeric, is_ascii_whitespace, is_ascii_punctuation, is_ascii_uppercase, is_ascii_lowercase, is_ascii_hexdigit.
Lucrul direct pe octeți este rapid și potrivit pentru formate simple (coduri poștale, numere de telefon, protocoale text). Aceleași metode există și pe char. Valoarea cifrei se obține cu b - b'0'.
Ce returnează
bool.
Exemple
Exemplul 1: Validarea unui cod poștal
Un cod poștal din România are exact 6 cifre.
fn cod_postal_valid(cod: &str) -> bool {
cod.len() == 6 && cod.bytes().all(|b| b.is_ascii_digit())
}
fn main() {
for cod in ["700259", "400 001", "50003", "5000a3", "٧٠٠٢٥٩"] {
println!("{cod:8} valid: {}", cod_postal_valid(cod));
}
}
Rezultat
700259 valid: true
400 001 valid: false
50003 valid: false
5000a3 valid: false
٧٠٠٢٥٩ valid: false
Exemplul 2: Extrage și adună cifrele dintr-un text
fn main() {
let text = b"Comanda 2026-10: 3 caiete, 12 pixuri";
let cifre: Vec<u8> = text.iter().filter(|b| b.is_ascii_digit()).map(|b| b - b'0').collect();
println!("cifre: {cifre:?}");
println!("suma cifrelor: {}", cifre.iter().map(|&c| c as u32).sum::<u32>());
let litere = text.iter().filter(|b| b.is_ascii_alphabetic()).count();
let spatii = text.iter().filter(|b| b.is_ascii_whitespace()).count();
println!("litere: {litere}, spații: {spatii}");
}
Rezultat
cifre: [2, 0, 2, 6, 1, 0, 3, 1, 2]
suma cifrelor: 17
litere: 19, spații: 5
Greșeli frecvente
- Folosești
char::is_numericcrezând că e la fel: acceptă și cifre din alte alfabete (arabe, chinezești). Pentru cifrele 0-9, foloseșteis_ascii_digit. - Verifici
b >= 48 && b <= 57cu numere:is_ascii_digit()sau(b'0'..=b'9').contains(&b)sunt mai clare.
Comenzi înrudite
u8: Întreg fără semn pe 8 biți (0-255): tipul unui octet, folosit pentru date binare și text ASCII/UTF-8.u8::to_ascii_uppercase: Transformă un octet literă ASCII mică în literă mare; orice alt octet rămâne neschimbat.ParseIntError: Eroarea returnată când un text nu poate fi transformat în număr întreg; kind() spune motivul exact.