Rust:
Extraction de sous-chaînes
How to:
fn main() {
let text = String::from("Bonjour, Rustaceans!");
let hello = &text[0..7]; // "Bonjour"
let rustaceans = &text[9..]; // "Rustaceans!"
println!("Salut: {}", hello);
println!("Fans de Rust: {}", rustaceans);
}
Sortie:
Salut: Bonjour
Fans de Rust: Rustaceans!
Deep Dive
Historiquement, l’extraction de sous-chaînes en Rust peut être piègeuse car elle opère directement avec les index des octets et non des caractères. Cela peut entraîner des erreurs si l’on ne fait pas attention aux points de code UTF-8 qui prennent plus d’un octet. À défaut d’utiliser la syntaxe de tranches, il existe des méthodes comme slice::split_at()
ou des itérateurs comme char_indices()
, qui sont plus sûrs avec l’encodage UTF-8 de Rust.
Les détails d’implémentation sont cruciaux: une extraction incorrecte peut causer le plantage du programme si on essaie de couper un caractère multioctet. Il est important de toujours valider ou de connaître les limites des données que l’on manipule.