···11//! Consume a CAR from an AsyncRead, producing an ordered stream of records
2233-use crate::walk::Output;
44-use crate::Bytes;
55-use crate::HashMap;
66-use crate::disk::{DiskError, DiskStore};
77-use crate::mst::MstNode;
33+use crate::{
44+ Bytes, HashMap,
55+ disk::{DiskError, DiskStore},
66+ mst::MstNode,
77+ walk::Output,
88+};
89use cid::Cid;
910use iroh_car::CarReader;
1011use std::convert::Infallible;
···254255 let commit = commit.ok_or(DriveError::MissingCommit)?;
255256256257 // the commit always must point to a Node; empty node => empty MST special case
257257- let root_node: MstNode = match mem_blocks.get(&commit.data).ok_or(DriveError::MissingCommit)? {
258258+ let root_node: MstNode = match mem_blocks
259259+ .get(&commit.data)
260260+ .ok_or(DriveError::MissingCommit)?
261261+ {
258262 MaybeProcessedBlock::Processed(_) => Err(WalkError::BadCommitFingerprint)?,
259263 MaybeProcessedBlock::Raw(bytes) => serde_ipld_dagcbor::from_slice(bytes)?,
260264 };
···300304 let mut out = Vec::with_capacity(n);
301305 for _ in 0..n {
302306 // walk as far as we can until we run out of blocks or find a record
303303- let Some(Output { rkey, cid: _, data }) = self.walker.step(&mut self.blocks, self.process)? else {
307307+ let Some(Output { rkey, cid: _, data }) =
308308+ self.walker.step(&mut self.blocks, self.process)?
309309+ else {
304310 break;
305311 };
306312 out.push((rkey, data));
+19-14
src/mst.rs
···33//! The primary aim is to work through the **tree** structure. Non-node blocks
44//! are left as raw bytes, for upper levels to parse into DAG-CBOR or whatever.
5566-use sha2::{Digest, Sha256};
76use cid::Cid;
87use serde::Deserialize;
88+use sha2::{Digest, Sha256};
991010/// The top-level data object in a repository's tree is a signed commit.
1111#[derive(Debug, Deserialize)]
···3737 pub sig: serde_bytes::ByteBuf,
3838}
39394040-use serde::de::{self, Deserializer, Visitor, MapAccess, Unexpected};
4040+use serde::de::{self, Deserializer, MapAccess, Unexpected, Visitor};
4141use std::fmt;
42424343pub type Depth = u32;
···9797 }
9898 found_left = true;
9999 if let Some(cid) = map.next_value()? {
100100- left = Some(NodeThing { cid, kind: ThingKind::Tree });
100100+ left = Some(NodeThing {
101101+ cid,
102102+ kind: ThingKind::Tree,
103103+ });
101104 }
102105 }
103106 "e" => {
···110113111114 for entry in map.next_value::<Vec<Entry>>()? {
112115 let mut rkey: Vec<u8> = vec![];
113113- let pre_checked = prefix
114114- .get(..entry.prefix_len)
115115- .ok_or_else(|| de::Error::invalid_value(
116116- Unexpected::Bytes(&prefix),
117117- &"a prefix at least as long as the prefix_len",
118118- ))?;
116116+ let pre_checked =
117117+ prefix.get(..entry.prefix_len).ok_or_else(|| {
118118+ de::Error::invalid_value(
119119+ Unexpected::Bytes(&prefix),
120120+ &"a prefix at least as long as the prefix_len",
121121+ )
122122+ })?;
119123120124 rkey.extend_from_slice(pre_checked);
121125 rkey.extend_from_slice(&entry.keysuffix);
122126123123- let rkey_s = String::from_utf8(rkey.clone())
124124- .map_err(|_| de::Error::invalid_value(
127127+ let rkey_s = String::from_utf8(rkey.clone()).map_err(|_| {
128128+ de::Error::invalid_value(
125129 Unexpected::Bytes(&rkey),
126130 &"a valid utf-8 rkey",
127127- ))?;
131131+ )
132132+ })?;
128133129134 let key_depth = atproto_mst_depth(&rkey_s);
130135 if depth.is_none() {
···150155151156 prefix = rkey;
152157 }
153153- },
154154- f => return Err(de::Error::unknown_field(f, NODE_FIELDS))
158158+ }
159159+ f => return Err(de::Error::unknown_field(f, NODE_FIELDS)),
155160 }
156161 }
157162 if !found_left {