diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-04-27 16:09:27 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-04-27 16:09:27 +0000 |
commit | bf645f3645fd2ee57495eafd1ccfb4afbe917bec (patch) | |
tree | 314e48f95e781e0e3b65dab7467e2fed4afafa47 /src/cmd/restore.rs | |
parent | 80aaff3f70f790141fbc8caa8a2f4830cd5e3fee (diff) | |
parent | 4ae0960619537234d5591b40d05f91b131330618 (diff) | |
download | obnam2-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.rs | 9 |
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())?; } |