Как предотвратить добавление зависимостей в документацию `rust doc`?

Я только начал играть с Rust и пытался сгенерировать документы для написанного мной кода. Когда я выпустил cargo docЯ увидел что-то странное.

21:53 $ cargo doc
   Compiling regex-syntax v0.2.2
   Compiling libc v0.2.2
   Compiling memchr v0.1.7
   Compiling aho-corasick v0.3.4
   Compiling regex v0.1.41
   Compiling my_project v0.0.1 (path/to/my_project)

Когда я открыл my_project/target/doc/my_project/index.htmlЯ заметил, что все зависимости были включены в мои документы:

Эти проклятые ящики

Мне бы хотелось, чтобы документация этих зависимостей была скрыта от пользователя, поэтому моя документация показывает только, как использовать мой код.

Как я могу это сделать?

Cargo.lock

[root]
name = "my_project"
version = "0.0.1"
dependencies = [
 "regex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "aho-corasick"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "libc"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"

[[package]]
name = "memchr"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "regex"
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "aho-corasick 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
 "memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 "regex-syntax 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "regex-syntax"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"

2 ответа

Решение

Я нашел ответ: cargo doc --no-deps,

По умолчанию, cargo docсоздает документацию для локального пакета и всех зависимостей. Вывод помещается в target / doc в обычном формате rustdoc.

Чтобы избежать создания документации для зависимостей, передайте --no-deps.

Обычно я сдаюсь --openтакже. Это открывает документацию в браузере после их создания.


Здесь можно найти более подробную информацию о том, как собрать документацию по пакету.


Простой пример. Учитывая следующее lib.rs файл

      //! This is my module documentation. My library is so nice!

/// four() is a function that returns `4`
///
/// ````
/// use mylib::four;
/// let x = four();
/// assert_eq!(four(), 4);
/// ````
pub fn four() -> i32 { 4 }

#[cfg(test)]
mod tests {
    use super::four;
    #[test]
    fn it_works() {
        assert_eq!(four(), 4);
    }
}

Когда один бежит

      cargo doc --no-deps --open

Браузер открывает следующее:

Другие вопросы по тегам