cargo_doc_md/
parser.rs

1//! JSON parser for rustdoc output.
2
3use anyhow::{Context, Result};
4use rustdoc_types::Crate;
5use std::path::Path;
6
7/// Load and parse a rustdoc JSON file.
8pub fn load_rustdoc_json(path: &Path) -> Result<Crate> {
9    let contents = std::fs::read_to_string(path)
10        .with_context(|| format!("Failed to read file: {}", path.display()))?;
11
12    let crate_data: Crate = serde_json::from_str(&contents)
13        .with_context(|| format!("Failed to parse JSON from: {}", path.display()))?;
14
15    println!(
16        "Loaded crate: {} (format version: {})",
17        crate_data
18            .index
19            .get(&crate_data.root)
20            .and_then(|item| item.name.as_deref())
21            .unwrap_or("unknown"),
22        crate_data.format_version
23    );
24
25    Ok(crate_data)
26}