summaryrefslogtreecommitdiff
path: root/src/cmd/restore.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-27 16:09:27 +0000
committerLars Wirzenius <liw@liw.fi>2021-04-27 16:09:27 +0000
commitbf645f3645fd2ee57495eafd1ccfb4afbe917bec (patch)
tree314e48f95e781e0e3b65dab7467e2fed4afafa47 /src/cmd/restore.rs
parent80aaff3f70f790141fbc8caa8a2f4830cd5e3fee (diff)
parent4ae0960619537234d5591b40d05f91b131330618 (diff)
downloadobnam2-bf645f3645fd2ee57495eafd1ccfb4afbe917bec.tar.gz
Merge branch 'feature/28-vec-to-iter' into 'main'
Return iterators instead of huge vectors Closes #28 See merge request larswirzenius/obnam!142
Diffstat (limited to 'src/cmd/restore.rs')
-rw-r--r--src/cmd/restore.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/cmd/restore.rs b/src/cmd/restore.rs
index a321e80..4de0830 100644
--- a/src/cmd/restore.rs
+++ b/src/cmd/restore.rs
@@ -40,7 +40,8 @@ impl Restore {
let gen = client.fetch_generation(&gen_id, temp.path())?;
info!("restoring {} files", gen.file_count()?);
let progress = create_progress_bar(gen.file_count()?, true);
- for file in gen.files()? {
+ for file in gen.files()?.iter()? {
+ let file = file?;
match file.reason() {
Reason::FileError => (),
_ => restore_generation(
@@ -53,7 +54,8 @@ impl Restore {
)?,
}
}
- for file in gen.files()? {
+ for file in gen.files()?.iter()? {
+ let file = file?;
if file.entry().is_dir() {
restore_directory_metadata(file.entry(), &self.to)?;
}
@@ -170,7 +172,8 @@ fn restore_regular(
std::fs::create_dir_all(parent)?;
{
let mut file = std::fs::File::create(path)?;
- for chunkid in gen.chunkids(fileid)? {
+ for chunkid in gen.chunkids(fileid)?.iter()? {
+ let chunkid = chunkid?;
let chunk = client.fetch_chunk(&chunkid)?;
file.write_all(chunk.data())?;
}