···8282pub use disk::{DiskBuilder, DiskDriver, DiskError, DiskStore, DriveError};
8383pub use mem::{DriverBuilder, LoadError, MemCar, PartialCar};
8484pub use mst::Commit;
8585-pub use walk::{Output, WalkError, WalkItem, noop};
8585+pub use walk::{MstError, Output, WalkError, WalkItem, noop};
86868787pub type Bytes = Vec<u8>;
8888
+4-3
src/mem.rs
···109109 let mut car = CarReader::new(reader).await?;
110110111111 let roots = car.header().roots();
112112- assert_eq!(roots.len(), 1);
113113-114112 let root = *roots.first().ok_or(LoadError::MissingRoot)?;
113113+ if roots.len() > 1 {
114114+ log::debug!("CAR has {} roots; ignoring all but the first", roots.len());
115115+ }
115116 log::debug!("root: {root:?}");
116117117118 let mut commit = None;
···172173 /// `None` if this slice (or full CAR) starts from the leftmost record in the tree.
173174 /// Not set automatically — callers may derive it from leading `MissingRecord` items.
174175 pub prev_key: Option<RepoPath>,
175175- pub blocks: HashMap<ObjectLink, MaybeProcessedBlock>,
176176+ pub(crate) blocks: HashMap<ObjectLink, MaybeProcessedBlock>,
176177 walker: Walker,
177178 process: fn(Bytes) -> Bytes,
178179}