Если вы уверены, что он не пустой и сделан из ascii, вы можете работать непосредственно с байтами (u8
):
a.as_bytes()[0].is_ascii_digit()
или
(b'0'..=b'9').contains(&a.as_bytes()[0])
Более общие настройки (и, на мой взгляд , больше идиоматических c):
a.chars().next().unwrap().is_numeric()
Причина, по которой все это выглядит немного громоздкой, заключается в том, что некоторые вещи могут идти не так ( которые легко упускаются из виду на других языках):
- строка может быть пустой => приводит нас к
Option
/ unwrap
-land - строки в ржавчине UTF-8 ( что в основном затрудняет произвольный доступ к строке; обратите внимание, что ржавчина не только считает 0-9 цифрой c, как показано здесь )