20 个版本

0.5.0 2024年1月12日
0.4.0 2023年12月13日
0.3.3 2023年12月13日
0.3.2 2023年5月26日
0.0.0 2020年12月22日

#20可视化

Download history 107029/week @ 2024-04-15 107230/week @ 2024-04-22 82318/week @ 2024-04-29 78716/week @ 2024-05-06 79388/week @ 2024-05-13 67535/week @ 2024-05-20 77053/week @ 2024-05-27 82585/week @ 2024-06-03 72262/week @ 2024-06-10 66136/week @ 2024-06-17 71306/week @ 2024-06-24 61302/week @ 2024-07-01 64780/week @ 2024-07-08 72916/week @ 2024-07-15 76627/week @ 2024-07-22 67714/week @ 2024-07-29

每月285,252下载
用于 672crates (49 直接)

MIT 许可证

12MB
296K SLoC

JavaScript 295K SLoC // 0.0% comments TypeScript 676 SLoC // 0.5% comments Rust 600 SLoC // 0.0% comments

Aquamarine

GitHub crates.io docs.rs

编译器支持:此 crate 需要 rustc 1.38.0 或更高版本

Aquamarine 是 rustdoc 的过程宏扩展,旨在通过使用 mermaid.js 图表来改进 Rust 文档的视觉组件。

#[aquamarine] 宏通过将 mermaid.js 嵌入生成的 rustdoc HTML 页面,修改文档注释属性来工作。

要将图表内联到文档中,请在文档字符串中使用 mermaid 碎片

#[cfg_attr(doc, aquamarine::aquamarine)]
/// ```mermaid
/// graph LR
///     s([Source]) --> a[[aquamarine]]
///     r[[rustdoc]] --> f([Docs w/ Mermaid!])
///     subgraph rustc[Rust Compiler]
///     a -. inject mermaid.js .-> r
///     end
/// ```
pub fn example() {}

图表将替换 mermaid 代码块出现的位置,保留其周围的全部注释。您甚至可以添加多个图表!

要查看实际效果,请访问 演示 crate 的 docs.rs 页面。

light

您可以在 mermaid 的 文档 MdBook 中了解更多关于 mermaid.js 以及它能做什么。

暗色模式

Aquamarine 将自动选择 dark 主题作为默认主题,如果当前 rustdoc 主题是 ayudark

您可能需要重新加载页面以重新绘制更改主题后的图表。

light

自定义主题

支持按图表自定义主题,通过 mermaid 的 %%init%% 属性。

注意:自定义主题将覆盖默认主题

/// ```mermaid
/// %%{init: {
///     'theme': 'base',
///     'themeVariables': {
///            'primaryColor': '#ffcccc', 
///            'edgeLabelBackground':'#ccccff', 
///            'tertiaryColor': '#fff0f0' }}}%%
/// graph TD
///      A(Diagram needs to be drawn) --> B{Does it have 'init' annotation?}
///      B -->|No| C(Apply default theme)
///      B -->|Yes| D(Apply customized theme)
/// ```

custom

要了解更多信息,请参阅 mermaid.js 书籍的 主题部分

将图表与代码分离

可以从文件中加载图表,以减少文档注释中的混乱。

#[cfg_attr(doc, aquamarine::aquamarine)]
/// My diagram #1
/// include_mmd!("diagram1.mmd")
/// My diagram #2
/// include_mmd!("diagram2.mmd")
pub fn example_foad_from_file() {}

import

在野

在其文档中使用 aquamarine 的 crates

以及其他

依赖项