Comment obtenir le premier caractère d'une chaîne en Rust ?
Bonjour à tous ! J'ai récemment commencé à apprendre Rust et j'ai rencontré une tâche apparemment simple : obtenir le premier caractère d'une chaîne. En Python, j'écrirais `text[0]` et tout fonctionne. Mais en Rust, cette approche ne fonctionne pas.
Voici mon code :
```rust
fn main() {
let greeting = String::from("Привет, мир!");
let first_char = greeting[0];
println!("Первый символ: {}", first_char);
}
```
Le compilateur donne une erreur : `the type 'String' cannot be indexed by 'usize'`. Je comprends que les chaînes en Rust ne sont pas de simples tableaux de caractères, mais des séquences de bytes encodées en UTF-8. Mais comment obtenir le premier caractère alors ? La documentation mentionne `.chars()` et `.bytes()`, mais je suis confus.
J'ai besoin de la première représentation graphème (caractère), pas d'un byte. Par exemple, pour la chaîne "Привет", je veux obtenir 'П', pas un byte quelconque. De plus, que faire si la chaîne est vide ? Et comment gérer les caractères multi-bytes, comme dans mon exemple avec le cyrillique ?
S'il vous plaît, expliquez avec des exemples simples.