Wrap an ArchiveReader so that it also expands the archive into a folder.
Works by handling ArchiveReaderEvents as they occur, but still emitting
them as it goes.
List of files and their metadata (including block hashes). It also
includes a table of the unique blocks, to easily determine the overall
archive size.
An engine that hashes data, looking for good split points. When it finds
a split point, it emits the length of the block and its hash (SHA-256,
Blake2, or Blake3).
Pick your poison for secure hashing. The blake3 variant stores like 2KB
on the stack, but it’s only created by the file scanner, which would need
to create it anyway.
Given paths to scan, a Writer to write to, write an entire file archive,
optionally with compression and/or encryption. This is the top-level API
for creating bitbottle archives.
Read and discard data from an io::Read. Returns the size of the stream,
and if the size was less than max_capture bytes, also returns the data
from the stream.