你如何在结构之前的一个文档块中记录一个 Rust 结构/枚举?

Posted

技术标签:

【中文标题】你如何在结构之前的一个文档块中记录一个 Rust 结构/枚举?【英文标题】:How do you document a Rust struct/enum in one documentation block before the struct? 【发布时间】:2021-10-22 14:29:19 【问题描述】:

你如何在类型之前的一个文档块中记录一个 Rust 结构或枚举,以避免混淆混乱污染内容?

这就是我目前所做的,这真的很糟糕。

/// Enumerates the possible jobblers in thingy paradigm.
enum MyEnum

  /// Something is a blue exchange doodad thingy thing. 
  EnumValue1,
  /// Something is meld mould mild mote.
  EnumValueTheSecond,
  /// Vivamus arcu mauris, interdum nec ultricies vitae, sagittis sit.
  EnumValueGamma,

我想要的是我会用 Doxygen 编写的风格,简洁易读:

/** \enum MyEnum
 *     Enumerates the possible jobblers in thingy paradigm.
 *  \var  MyEnum::EnumValue1
 *     Something is a blue exchange doodad thingy thing. 
 *  \var  MyEnum::EnumValueTheSecond
 *     Something is meld mould mild mote.
 *  \var  MyEnum::EnumValueGamma
 *     Vivamus arcu mauris, interdum nec ultricies vitae, sagittis sit.
 */
enum MyEnum

  EnumValue1,
  EnumValueTheSecond,
  EnumValueGamma,
;

【问题讨论】:

考虑让您的眼睛有机会适应您目前认为“非常糟糕”的风格。我怀疑几周后它看起来不会那么糟糕。 除了看起来更好的基于意见的问题之外,第二种样式的一个大缺点是您需要在评论中重复枚举名称,增加了它们会消失的风险如果有人更改代码并忘记更新评论,则与代码同步。 【参考方案1】:

这就是我目前所做的,这真的很糟糕。

我猜美丽在旁观者的眼中?对我来说看起来不错,代码的读者可以在同一个地方看到相应项目的文档,这是有道理的。

我想要的是我会用 Doxygen 编写的风格,简洁易读:

我再次猜想美丽在旁观者的眼中,因为我认为这看起来像是着火的垃圾,但 AFAIK rustdoc 不支持这一点(文档评论只是 commonmark with limited extension),所以你可以:

完全忽略 rustdoc 对子项目的支持,只需在顶层项目中记录您想要的所有内容

use function-like macros and #[doc] 在结构上方的宏中定义你的东西,然后用#[doc] 属性来链接这些,我认为你不能只是#[doc = A_CONST]

How to embed a Rust macro variable into documentation? 和 How to concatenate a literal string with a const string? 也可以用于此目的

【讨论】:

【参考方案2】:

如何在枚举值之后记录枚举值,例如:

/// Enumerates the possible jobblers in thingy paradigm.
enum MyEnum

  EnumValue1, ///< Something is a blue exchange doodad thingy thing.
  EnumValueTheSecond, ///< Something is meld mould mild mote.
  EnumValueGamma, ///< Vivamus arcu mauris, interdum nec ultricies vitae, sagittis sit.

【讨论】:

以上是关于你如何在结构之前的一个文档块中记录一个 Rust 结构/枚举?的主要内容,如果未能解决你的问题,请参考以下文章

Rust语言圣经43 - 深度解读文档注释

Rust语言圣经43 - 深度解读文档注释

Rust语言圣经43 - 深度解读文档注释

Rust语言圣经43 - 深度解读文档注释

Oracle在块内是如何组织和管理数据的

如何在 Rust 的结构中存储闭包?