Ошибка компиляции при запуске cargo bench (criterion / serde)

#rust #rust-cargo #serde #rust-criterion

#Ржавчина #rust-груз #serde #rust-критерий

Вопрос:

Я добавил следующие строки в cargo.toml свой проект, чтобы сравнить свой код:

 [dev-dependencies]
criterion = "0.3"

[[bench]]
name = "samples"
harness = false
 

После запуска cargo bench я получаю много ошибок, подобных следующим:

 Compiling criterion v0.3.4
error[E0603]: module `export` is private
   --> C:DevelopmentRustcargoregistrysrcgithub.com-1ecc6299db9ec823criterion-0.3.4srcconnection.rs:201:17
    |
201 | #[derive(Debug, Deserialize)]
    |                 ^^^^^^^^^^^ private module
    |
note: the module `export` is defined here
   --> C:DevelopmentRustcargoregistrysrcgithub.com-1ecc6299db9ec823serde-1.0.123srclib.rs:275:5
    |
275 | use self::__private as export;
 

Мне кажется, что сообщение об ошибке связано с проблемой между serde и criterion . Но я не нашел этого сообщения об ошибке ни в одном из вопросов проекта, так что в моем рабочем пространстве может быть скрытая причина.

Некоторая дополнительная информация:

  • проект компилируется с использованием набора инструментов nightly
  • существует только одна явная зависимость (макросы proc), в cargo.toml которой транзитивные ссылки syn quote и proc-macro2

Ответ №1:

serde Версия и serde_derive версия в вашем графике зависимостей не совпадают. Вам нужно использовать cargo update , чтобы синхронизировать их. У двух всегда должен быть одинаковый номер версии.