Cargo doc 不会为既是库又是二进制的项目中的私有项目生成文档

l3u*_*fly 5 rust rustdoc

当我运行时cargo doc,它似乎没有为我的项目中的库生成文档。我正在使用最新版本的 Rust,正如这篇文章所回答的:How can I include private module while generated Documentation via Cargo?

这是我的结构:

- services/
    - mod.rs
    - my_service.rs
- lib.rs
- main.rs
Run Code Online (Sandbox Code Playgroud)

main.rs仅包含要启动的“main”函数:

use test_doc::Core;

fn main() {
    Core::start();
}
Run Code Online (Sandbox Code Playgroud)

lib.rs包含实际逻辑:

mod services;

/// Core process
pub struct Core;

impl Core {
    pub fn start() -> ! {
        loop {
            // do stuff here    
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后my_service.rs包含更多逻辑:

/// My service should do stuff
pub struct MyService;

impl MyService {
    /// This function actually does stuff
    pub fn do_stuff(&self) -> &'static str {
        "doing stuff"
    }
}
Run Code Online (Sandbox Code Playgroud)

mod.rsinsidemy_service文件夹仅用作入口点:

pub mod my_service;
Run Code Online (Sandbox Code Playgroud)

此代码编译并成功执行,但我不确定为什么文档未正确生成。

这是我运行时生成的文档的屏幕截图cargo doc --open在此输入图像描述

我在任何地方都找不到MyService文档...(单击“结构”链接只会跳转到主页上的锚点)

She*_*ter 3

一个小得多的例子:

src/main.rs

//! THE BINARY

fn main() {}
Run Code Online (Sandbox Code Playgroud)

src/lib.rs

//! THE LIBRARY

/// You can't see me
fn private() {}
Run Code Online (Sandbox Code Playgroud)

当我运行时cargo doc,我看到 macOS 上的 Rust 1.55 生成了该库的文档。如通过 Cargo 生成文档时如何包含私有模块中所述?,在记录库时,不包括私人项目。你需要经过--document-private-items旗帜才能看到他们。

如果您希望记录二进制文件,则需要传递--binor--bins标志。如果您想记录该库,则需要传递该--lib标志。