cargo_doc_docusaurus/
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}