cargo_docs_md/multi_crate/mod.rs
1//! Multi-crate documentation generation.
2//!
3//! This module provides support for generating documentation from multiple
4//! rustdoc JSON files, enabling cross-crate linking and self-contained
5//! documentation for entire dependency trees.
6//!
7//! # Architecture
8//!
9//! The multi-crate system uses these components:
10//!
11//! - [`CrateCollection`]: Container for parsed crates with processing order
12//! - [`MultiCrateParser`]: Scans directories and parses JSON files
13//! - [`UnifiedLinkRegistry`]: Cross-crate link resolution
14//! - [`MultiCrateContext`]: Shared state during generation
15//! - [`MultiCrateGenerator`]: Orchestrates per-crate generation
16//! - [`SummaryGenerator`]: Creates mdBook-compatible SUMMARY.md
17//!
18//! # Usage
19//!
20//! ```ignore
21//! use docs_md::multi_crate::{MultiCrateParser, MultiCrateGenerator};
22//!
23//! let crates = MultiCrateParser::parse_directory(Path::new("target/doc"))?;
24//! let generator = MultiCrateGenerator::new(&crates, &args);
25//! generator.generate()?;
26//! ```
27
28/// Rust module path separator (e.g., `serde_json::de::from_str`).
29pub const RUST_PATH_SEP: &str = "::";
30
31/// File system path separator for generated documentation.
32pub const FILE_PATH_SEP: char = '/';
33
34mod collection;
35mod context;
36mod generator;
37mod parser;
38mod registry;
39mod search;
40mod summary;
41
42pub use collection::CrateCollection;
43pub use context::{MultiCrateContext, SingleCrateView};
44pub use generator::MultiCrateGenerator;
45pub use parser::MultiCrateParser;
46pub use registry::UnifiedLinkRegistry;
47pub use search::{SearchIndex, SearchIndexGenerator};
48pub use summary::SummaryGenerator;