5 votes

Comment imprimer le contenu d'un syn::Expr avec println ?

J'essaie d'afficher le contenu d'un fichier syn::Expr dans la console, mais j'obtiens l'erreur suivante :

error[E0599]: no method named `to_string` found for type `&syn::Expr` in the current scope
   --> derive/src/lib.rs:165:40
    |
165 |                 println!("Expression: {:#?}", expr.to_string());
    |                                                    ^^^^^^^^^
    |
    = note: the method `to_string` exists but the following trait bounds were not satisfied:
            `syn::Expr : std::string::ToString`
            `&syn::Expr : std::string::ToString`
            `syn::Expr : std::string::ToString`

Je ne comprends pas bien ce que sont les "limites de traits" ni comment les satisfaire. Existe-t-il un moyen simple d'afficher le contenu de cette variable ?

11voto

Shepmaster Points 1732

syn::Expr est documenté comme la mise en œuvre de la Debug trait donc vous utilisez le Debug formateur :

extern crate syn; // 0.15.4

fn example(expr: syn::Expr) {
    println!("{:#?}", expr);
}

Cependant tous Debug mises en œuvre dans syn sont gardés par le dispositif Cargo extra-traits . Donc, afin d'utiliser ces Debug vous devez activer spécifiquement cette fonction dans votre système de gestion de l'information. Cargo.toml :

[dependencies]
syn = { version = "0.15", features = ["extra-traits"] }

Vous pouvez en savoir plus sur syn Caractéristiques de l'option Cargo dans leur README .


Voir aussi :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X