Невозможно использовать макрос `doc!` Из ящика mongodb в области действия субмодуля
Я использую следующую структуру файлов:
├── src
│ ├── main.rs // Macros from here
│ ├── models
│ │ ├── mod.rs // Loads the user.rs file
│ │ └── user.rs // Should be visible here
├── Cargo.toml
мой main.rs
Файл импортирует такие вещи, как:
#[macro_use]
extern crate mongodb;
mod models;
мой user.rs
файл выглядит так:
pub struct User {
username: String,
password: String,
}
impl User {
fn create_doc() {
// Some code, but doc! from crate mongodb is not in this scope.
}
}
Как я могу использовать мой doc!
макрос в user.rs
файл? Я тоже пытался добавить #[macro_use]
на такие вещи, как mod models;
, но ничего не получалось.
2 ответа
Решение
Ящик mongodb (версия 0.3.1) не имеет такого макроса. Ящик bson (версия 0.9.0), зависимость mongodb, делает. Вы должны заявить об этом и импортировать оттуда:
#[macro_use]
extern crate bson;
extern crate mongodb;
Ящик mongodb (версия 1.1.1) реэкспортирует bson. В Rust 2018 вы можете написать
use mongodb::bson::doc