Implement DigestOps
trait for Digest
across CRC types.
#125
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pr adds the
DigestOps
trait which is implemented by all Digest types. It allows to useupdate
andfinalize
of anyDigest
without the Implementation (Table) constraint.This is useful for cases where code does not care about the Implementation (Table) of a digest, like a checksum function on a struct which generates a checksum for it.
Before this trait I had to use this to be able to accept digests with (almost) any table type:
Here is an example how this can be done better with tools in the library itself, the DigestOps trait. The Width is still relevant but the implementation detail of Implementation (Table) is gone, as it is not relevant.
The
finalize
function is duplicated as the trait function cannot be of typeconst fn
and to keep backward compatibility I kept it.