use anyhow::{Context, Result}; use serde::de::DeserializeOwned; use std::path::Path; #[allow(dead_code)] /// Generic loader for JSON arrays from a directory. pub fn load_json_dir(dir: &Path) -> Result> { let mut items = Vec::new(); if !dir.exists() { return Ok(items); } for entry in std::fs::read_dir(dir).with_context(|| format!("reading dir {dir:?}"))? { let entry = entry?; let path = entry.path(); if path.extension().map(|e| e == "json").unwrap_or(false) { let content = std::fs::read_to_string(&path).with_context(|| format!("reading {path:?}"))?; let batch: Vec = serde_json::from_str(&content).with_context(|| format!("parsing {path:?}"))?; items.extend(batch); } } Ok(items) }