当我运行时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.rs
insidemy_service
文件夹仅用作入口点:
pub mod my_service;
Run Code Online (Sandbox Code Playgroud)
此代码编译并成功执行,但我不确定为什么文档未正确生成。
这是我运行时生成的文档的屏幕截图cargo doc --open
:
我在任何地方都找不到MyService
文档...(单击“结构”链接只会跳转到主页上的锚点)
一个小得多的例子:
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
旗帜才能看到他们。
如果您希望记录二进制文件,则需要传递--bin
or--bins
标志。如果您想记录该库,则需要传递该--lib
标志。