Comment obtenir une représentation sous forme de chaîne d'une variante d'énumération (enum) en Rust ?
Bonjour à tous ! Je viens de commencer à apprendre Rust et j'ai rencontré un problème qui semble simple, mais je n'arrive pas à trouver une solution élégante.
J'ai une énumération pour les statuts de commande :
```rust
enum OrderStatus {
Pending,
Processing,
Shipped,
Delivered,
Cancelled,
}
```
Je dois afficher le statut actuel dans la console pour la journalisation et pour l'affichage à l'utilisateur. J'ai essayé d'utiliser simplement `println!("{}", status)`, mais le compilateur renvoie une erreur indiquant que le trait `std::fmt::Display` n'est pas implémenté pour mon type.
Je sais que je peux ajouter `#[derive(Debug)]` et utiliser `{:?}`, mais cela donne un résultat comme `OrderStatus::Pending`, alors que j'ai besoin simplement de "Pending" sans le nom de l'énumération. J'ai aussi essayé d'écrire une expression match pour chaque variante, mais cela semble très lourd, surtout s'il y a beaucoup de variantes.
Pouvez-vous me dire comment obtenir correctement et idiomatiquement une chaîne à partir d'une variante d'enum en Rust ? Idéalement sans copie inutile et avec un minimum de surcharge. Merci d'avance !
No answers yet.
Connectez-vous pour laisser une réponse
Blogs