Невозможно использовать макрос `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
Другие вопросы по тегам