Skip to content

cargo doc: add option to document specific private items #66528

Open
@Monnoroch

Description

@Monnoroch

Problem

I often find myself wanting to expose documentation for a private API that shouldn't be called directly, but is an important enough implementation detail for the advanced users of my library to benefit from reading it.

Proposal

I want to propose a #[doc(visible)] attribute that is analogous to the #[doc(hidden)] one. The new attribute would exclude the labeled item from being removed by the strip-private rustdoc pass.

Alternative solutions considered:

Making the API public.

Solves the problem, but also creates a new one. Especially bad if the API in question is by itself unsafe and relies heavily on implementation of other parts of the library to guarantee safety. I really don't want users to call such an API.

Fake item

I could create a fake public struct / method and add my "hidden" documentation to it. This however does not really solve the problem, as the documentation has links to private items that wouldn't work without making the items public. In addition, it's just a nightmare to debug and support such documentation.

Module-level documentation

Same problem as above, links still will not work.

cargo doc --document-private-items

See rust-lang/cargo#1520.

Also solves the problem, but creates a new one: it adds a ton of clutter making all the documentation much less readable and useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-feature-requestCategory: A feature request, i.e: not implemented / a PR.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions