#docs #编译时 #嵌入 #

docify

Docify 允许您在编译时将项目中的代码片段实时嵌入为 Rust 文档示例

26 个版本

0.2.8 2024年4月1日
0.2.7 2023年11月29日
0.2.6 2023年10月27日
0.2.4 2023年9月20日
0.1.13 2023年5月29日

过程宏 类别中排名第 44

Download history 41537/week @ 2024-04-22 30497/week @ 2024-04-29 32546/week @ 2024-05-06 37187/week @ 2024-05-13 35783/week @ 2024-05-20 43397/week @ 2024-05-27 37016/week @ 2024-06-03 31181/week @ 2024-06-10 33549/week @ 2024-06-17 40885/week @ 2024-06-24 36116/week @ 2024-07-01 35716/week @ 2024-07-08 44875/week @ 2024-07-15 45913/week @ 2024-07-22 39381/week @ 2024-07-29 45522/week @ 2024-08-05

每月下载量 177,130
497 个crate中使用(直接使用29个)

MIT 许可

16KB
122

Docify

Crates.io docs.rs Build Status MIT License

这个crate提供了一组简单的Rust宏,即#[docify::export]docify::embed!,它们允许您将当前crate或当前crate的子crate中的测试和示例动态嵌入到Rust文档注释中,并且可以选择使这些示例可执行。

docify的目的是允许您直接在文档中展示您最好的示例和测试,而不必在每次更改时更新两个地方。它还鼓励一种方法,即crate作者更好地记录他们的测试,因为他们现在可以直接在文档注释中展示这些测试。

总的来说,这比将文档示例孤立在文档中要好得多,因为您可以直接避免周围代码的模板代码,只需关注展示您想突出的项目。

通用用法

使用 docify 很简单。首先,使用 #[docify::export] 标记您希望嵌入的测试/示例/项目,如下所示

#[docify::export]
fn some_example() {
  assert_eq!(2 + 2, 4);
  assert_eq!(2 + 3, 5);
  assert_eq!(3 + 3, 6);
}

然后,您可以使用 docify::embed 宏直接在文档注释中嵌入此项目

/// These are some docs about an item. You can embed examples, tests, and
/// other items directly into docs using the following macro:
#[doc = docify::embed!("source/file/path.rs", some_example)]
/// More docs can go here, the example will embed itself inline exactly
/// where you reference it.
pub struct SomeItem;

这将生成以下扩展文档注释

/// These are some docs about an item. You can embed examples,
/// tests, and other items directly into docs using the
/// following macro:
/// ```ignore
/// fn some_example() {
///   assert_eq!(2 + 2, 4);
///   assert_eq!(2 + 3, 5);
///   assert_eq!(3 + 3, 6);
/// }
/// ```
/// More docs can go here, the example will embed itself inline
/// exactly where you reference it.
pub struct SomeItem;

您可以将任何可以附加属性宏的项目嵌入。

可执行示例

请注意,您还可以使用embed_run!版本的宏来使嵌入式示例作为文档测试的一部分进行编译/运行,这在某些情况下是有益的,尽管通常示例已经在项目的其他地方运行/编译。

Markdown

新增功能允许编译包含正则docify::embed!(..)调用的HTML注释的Markdown文件,可以选择编译整个目录的文件或单个文件。

事实上,每次在此crate上运行cargo doc时,此README.md文件都会自动编译,从而生成以下动态填充的代码块:

fn some_example() {
    assert_eq!(2 + 2, 4);
    assert_eq!(2 + 3, 5);
    assert_eq!(3 + 3, 6);
}

如果您查看.README.docify.md源代码,您会注意到我们使用了以下HTML注释来执行上述嵌入:

<!-- docify::embed!("examples/samples.rs", some_example) -->

有关更多信息,请参阅compile_markdown!

更多信息

有关更多文档、功能和示例,请查看文档

依赖关系

~3–11MB
~121K SLoC