Function cargo::ops::cargo_compile::remove_duplicate_doc

source ·
fn remove_duplicate_doc(
    build_config: &BuildConfig,
    root_units: &[Unit],
    unit_graph: &mut UnitGraph,
)
Expand description

Removes duplicate CompileMode::Doc units that would cause problems with filename collisions.

Rustdoc only separates units by crate name in the file directory structure. If any two units with the same crate name exist, this would cause a filename collision, causing different rustdoc invocations to stomp on one another’s files.

Unfortunately this does not remove all duplicates, as some of them are either user error, or difficult to remove. Cases that I can think of:

  • Same target name in different packages. See the collision_doc test.
  • Different sources. See collision_doc_sources test.

Ideally this would not be necessary.