mrhooray / crc-rs

Rust implementation of CRC(16, 32, 64) with support of various standards
Apache License 2.0
187 stars 49 forks source link

Allow for multiple calls to finalize (or equivalent) #111

Open jpittis opened 8 months ago

jpittis commented 8 months ago

Imagine a use-case where someone would like to maintain a rolling CRC digest, while also regularly reading the sum of that CRC digest via the equivalent of calling finalize. This is a common pattern used by write ahead logs where you want to maintain a rolling CRC of all the data written to the log, while also embedding the rolling finalized value in each of the records written to disk.

As far as I can tell, the current APIs are not compatible with this use-case:

A workaround might be to clone the Digest before calling finalize which seems inefficient.

Any thoughts on this use-case and the best way to unlock it?