pub struct Encoder(/* private fields */);Expand description
Reed-Solomon encoder using DefaultEngine and DefaultRate.
Implementations§
Source§impl Encoder
impl Encoder
Sourcepub fn add_original_shard<T: AsRef<[u8]>>(
&mut self,
original_shard: T,
) -> Result<(), Error>
pub fn add_original_shard<T: AsRef<[u8]>>( &mut self, original_shard: T, ) -> Result<(), Error>
Adds one original shard to the encoder.
Original shards have indexes 0..original_count corresponding to the order in which they
are added, and these same indexes must be used when decoding.
See basic usage for an example.
Sourcepub fn encode(&mut self) -> Result<EncoderResult<'_>, Error>
pub fn encode(&mut self) -> Result<EncoderResult<'_>, Error>
Encodes the added original shards, returning EncoderResult which contains the
generated recovery shards.
When the returned EncoderResult is dropped the encoder is automatically reset and
ready for a new round of encoding. A result that is leaked instead of dropped (for example
with core::mem::forget) leaves the encoder reporting a complete round, and the next
encode would transform the previous round’s buffers again. Call
reset before reusing an encoder whose result was leaked.
See basic usage for an example.
Sourcepub fn new(
original_count: usize,
recovery_count: usize,
shard_bytes: usize,
) -> Result<Self, Error>
pub fn new( original_count: usize, recovery_count: usize, shard_bytes: usize, ) -> Result<Self, Error>
Creates a new encoder with the given configuration and allocates the required working space.
See working space for its size and the configurations a coder accepts, and basic usage for an example.
Sourcepub fn reset(
&mut self,
original_count: usize,
recovery_count: usize,
shard_bytes: usize,
) -> Result<(), Error>
pub fn reset( &mut self, original_count: usize, recovery_count: usize, shard_bytes: usize, ) -> Result<(), Error>
Resets the encoder to the given configuration.
- Added original shards are forgotten.
- Existing working space is reused if it is large enough, or reallocated otherwise.
Sourcepub fn supports(original_count: usize, recovery_count: usize) -> bool
pub fn supports(original_count: usize, recovery_count: usize) -> bool
Returns true if the given original_count / recovery_count combination is supported.
§Examples
use commonware_cryptography::reed_solomon::Encoder;
assert_eq!(Encoder::supports(60_000, 4_000), true);
assert_eq!(Encoder::supports(60_000, 5_000), false);