Как распечатать содержимое syn :: Expr с println? - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь вывести содержимое syn::Expr на консоль, но получаю следующую ошибку:

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`

Мне не ясно, что такое "границы черты" или как удовлетворитьих.Существуют ли простые способы вывода содержимого этой переменной?

1 Ответ

0 голосов
/ 09 октября 2018

syn::Expr задокументировано как , реализующий черту Debug , поэтому вы используете форматер Debug:

extern crate syn; // 0.15.4

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

Однако, все реализации Debug в syn защищены функцией Cargo extra-traits.Таким образом, чтобы использовать эти Debug значения, вам необходимо специально включить эту функцию в Cargo.toml:

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

. Вы можете узнать больше о дополнительных функциях Cargo syn вих README .


См. также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...