reed_solomon_simd

Struct ReedSolomonDecoder

Source
pub struct ReedSolomonDecoder(/* private fields */);
Expand description

Reed-Solomon decoder using DefaultEngine and DefaultRate.

Implementations§

Source§

impl ReedSolomonDecoder

Source

pub fn add_original_shard<T: AsRef<[u8]>>( &mut self, index: usize, original_shard: T, ) -> Result<(), Error>

Adds one original shard to the decoder.

  • Shards can be added in any order.
  • Index must be the same that was used in encoding.

See basic usage for an example.

Source

pub fn add_recovery_shard<T: AsRef<[u8]>>( &mut self, index: usize, recovery_shard: T, ) -> Result<(), Error>

Adds one recovery shard to the decoder.

  • Shards can be added in any order.
  • Index must be the same that was used in encoding.

See basic usage for an example.

Source

pub fn decode(&mut self) -> Result<DecoderResult<'_>, Error>

Decodes the added shards returning DecoderResult which contains the restored original shards.

When returned DecoderResult is dropped the decoder is automatically reset and ready for new round of decoding.

See basic usage for an example.

Source

pub fn new( original_count: usize, recovery_count: usize, shard_bytes: usize, ) -> Result<Self, Error>

Creates new decoder with given configuration and allocates required working space.

See basic usage for an example.

Source

pub fn reset( &mut self, original_count: usize, recovery_count: usize, shard_bytes: usize, ) -> Result<(), Error>

Resets decoder to given configuration.

  • Added shards are forgotten.
  • Existing working space is re-used if it’s large enough or re-allocated otherwise.
Source

pub fn supports(original_count: usize, recovery_count: usize) -> bool

Returns true if given original_count / recovery_count combination is supported.

§Examples
use reed_solomon_simd::ReedSolomonDecoder;

assert_eq!(ReedSolomonDecoder::supports(60_000, 4_000), true);
assert_eq!(ReedSolomonDecoder::supports(60_000, 5_000), false);

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.