Avatar ·

Comment obtenir le nombre de caractères dans une chaîne en Rust, et non d'octets ?

Bonjour, collègues ! Je viens de commencer à apprendre Rust et j'ai rencontré un problème inattendu. J'ai besoin de connaître la longueur d'une chaîne en caractères (char), pas en octets. Dans d'autres langages, comme Python ou Java, la méthode len() renvoie généralement le nombre de caractères. Mais en Rust, c'est différent. Voici un exemple qui m'a dérouté : ```rust fn main() { let text = String::from("Привет, мир!"); println!("Длина строки: {}", text.len()); } ``` Je m'attendais à voir 12 (le nombre de caractères dans la chaîne "Привет, мир!"), mais j'ai obtenu 20. Ensuite, j'ai compris que la méthode .len() compte les octets. En UTF-8, les caractères cyrilliques occupent 2 octets, donc le résultat est différent. Mais j'ai besoin du nombre de caractères — pour l'interface utilisateur, la validation de la longueur de la saisie ou le comptage de mots. Dites-moi, existe-t-il en Rust une méthode qui renvoie le nombre de caractères, et non d'octets ? Ou dois-je écrire ma propre implémentation ? Je serais reconnaissant pour des exemples de code. Important : la chaîne peut contenir non seulement de l'ASCII, mais aussi des emojis, du cyrillique, etc.