From df3af9727efda5e4e98155a65976896b8ce7dd9c Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Wed, 27 Jul 2022 22:15:21 +1000 Subject: [PATCH] Impl new fn `Records::overwrite` Signed-off-by: Jiahao XU --- src/metafiles/binstall_v1.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/metafiles/binstall_v1.rs b/src/metafiles/binstall_v1.rs index e2ecac5d..ae1c3bc8 100644 --- a/src/metafiles/binstall_v1.rs +++ b/src/metafiles/binstall_v1.rs @@ -95,6 +95,10 @@ where .open(path)?, )?; + write_to(file, &mut iter.into_iter()) +} + +pub fn write_to(file: FileLock, iter: &mut dyn Iterator) -> Result<(), Error> { let writer = io::BufWriter::with_capacity(512, file); let mut ser = serde_json::Serializer::new(writer); @@ -115,6 +119,7 @@ pub fn default_path() -> Result { #[derive(Debug)] pub struct Records { file: FileLock, + /// Use BTreeSet to dedup the metadata data: BTreeSet, } @@ -144,4 +149,9 @@ impl Records { pub fn load() -> Result { Self::load_from_path(default_path()?) } + + /// **Warning: This will overwrite all existing records!** + pub fn overwrite(self) -> Result<(), Error> { + write_to(self.file, &mut self.data.into_iter()) + } }