Вы - жертва "волхвов c", стоящих за автоматизацией c реализации черты, т.е. процедурных макросов. Обычно люди дают процедурный макрос, который реализует черту с тем же именем, что и черта (потому что это удобно). Здесь есть черта serde::Serialize
, но есть и процедурный макрос, который автоматически реализует эту черту serde::Serialize
.
Они не конфликтуют, потому что живут в разных пространствах имен, а компилятор выводит из контекст, если это макрос или признак.
В вашей ситуации вы забыли добавить функцию derive
, поэтому в serde нет макроса pro c. Таким образом, вы импортируете черту, не используя ее, и пытаетесь использовать несуществующий макрос pro c.
Решение состоит в том, чтобы использовать derive
функцию *1013* serde :
serde = { version = "1.0", features = ["derive"] }