+1
-1
Cargo.lock
+1
-1
Cargo.lock
+1
-1
Cargo.toml
+1
-1
Cargo.toml
+2
-1
src/disk.rs
+2
-1
src/disk.rs
···
53
53
}
54
54
55
55
/// Builder-style disk store setup
56
+
#[derive(Debug, Clone)]
56
57
pub struct DiskBuilder {
57
58
/// Database in-memory cache allowance
58
59
///
···
96
97
self
97
98
}
98
99
/// Open and initialize the actual disk storage
99
-
pub async fn open(self, path: PathBuf) -> Result<DiskStore, DiskError> {
100
+
pub async fn open(&self, path: PathBuf) -> Result<DiskStore, DiskError> {
100
101
DiskStore::new(path, self.cache_size_mb, self.max_stored_mb).await
101
102
}
102
103
}
+4
-2
src/drive.rs
+4
-2
src/drive.rs
···
116
116
}
117
117
118
118
/// Builder-style driver setup
119
+
#[derive(Debug, Clone)]
119
120
pub struct DriverBuilder {
120
121
pub mem_limit_mb: usize,
121
122
}
···
153
154
}
154
155
/// Begin processing an atproto MST from a CAR file
155
156
pub async fn load_car<R: AsyncRead + Unpin>(
156
-
self,
157
+
&self,
157
158
reader: R,
158
159
) -> Result<Driver<R, Vec<u8>>, DriveError> {
159
160
Driver::load_car(reader, crate::process::noop, self.mem_limit_mb).await
···
163
164
/// Builder-style driver intermediate step
164
165
///
165
166
/// start from `DriverBuilder`
167
+
#[derive(Debug, Clone)]
166
168
pub struct DriverBuilderWithProcessor<T: Processable> {
167
169
pub mem_limit_mb: usize,
168
170
pub block_processor: fn(Vec<u8>) -> T,
···
178
180
}
179
181
/// Begin processing an atproto MST from a CAR file
180
182
pub async fn load_car<R: AsyncRead + Unpin>(
181
-
self,
183
+
&self,
182
184
reader: R,
183
185
) -> Result<Driver<R, T>, DriveError> {
184
186
Driver::load_car(reader, self.block_processor, self.mem_limit_mb).await
+1
-1
src/lib.rs
+1
-1
src/lib.rs
+15
src/process.rs
+15
src/process.rs
···
85
85
direct_size + items_referenced_size
86
86
}
87
87
}
88
+
89
+
impl<Item: Processable> Processable for Option<Item> {
90
+
fn get_size(&self) -> usize {
91
+
self.as_ref().map(|item| item.get_size()).unwrap_or(0)
92
+
}
93
+
}
94
+
95
+
impl<Item: Processable, Error: Processable> Processable for Result<Item, Error> {
96
+
fn get_size(&self) -> usize {
97
+
match self {
98
+
Ok(item) => item.get_size(),
99
+
Err(err) => err.get_size(),
100
+
}
101
+
}
102
+
}