pub struct Decoder { /* private fields */ }
Expand description
Reed-Solomon BCH decoder
Implementations§
Source§impl Decoder
impl Decoder
Sourcepub fn correct_err_count(
&self,
msg: &[u8],
erase_pos: Option<&[u8]>,
) -> Result<(Buffer, usize), DecoderError>
pub fn correct_err_count( &self, msg: &[u8], erase_pos: Option<&[u8]>, ) -> Result<(Buffer, usize), DecoderError>
Decodes block-encoded message and returns Buffer
with corrected message and ecc offset.
Also includes the number of errors corrected.
§Example
use reed_solomon::Encoder;
use reed_solomon::Decoder;
// Create encoder and decoder
let encoder = Encoder::new(4);
let decoder = Decoder::new(4);
// Encode message
let mut encoded = encoder.encode(&[1, 2, 3, 4]);
// Corrupt message
encoded[2] = 1;
encoded[3] = 2;
// Let's assume it's known that `encoded[3]` is an error
let known_erasures = [3];
// Decode and correct message,
let corrected = decoder.correct(&mut encoded, Some(&known_erasures)).unwrap();
// Check results
assert_eq!(&[1, 2, 3, 4], corrected.data())
Sourcepub fn correct(
&self,
msg: &[u8],
erase_pos: Option<&[u8]>,
) -> Result<Buffer, DecoderError>
pub fn correct( &self, msg: &[u8], erase_pos: Option<&[u8]>, ) -> Result<Buffer, DecoderError>
Decodes block-encoded message and returns Buffer
with corrected message and ecc offset.
§Example
use reed_solomon::Encoder;
use reed_solomon::Decoder;
// Create encoder and decoder
let encoder = Encoder::new(4);
let decoder = Decoder::new(4);
// Encode message
let mut encoded = encoder.encode(&[1, 2, 3, 4]);
// Corrupt message
encoded[2] = 1;
encoded[3] = 2;
// Let's assume it's known that `encoded[3]` is an error
let known_erasures = [3];
// Decode and correct message,
let corrected = decoder.correct(&mut encoded, Some(&known_erasures)).unwrap();
// Check results
assert_eq!(&[1, 2, 3, 4], corrected.data())
Sourcepub fn is_corrupted(&self, msg: &[u8]) -> bool
pub fn is_corrupted(&self, msg: &[u8]) -> bool
Performs fast corruption check.
§Example
use reed_solomon::Encoder;
use reed_solomon::Decoder;
// Create encoder and decoder
let encoder = Encoder::new(4);
let decoder = Decoder::new(4);
// Encode message
let mut encoded = encoder.encode(&[1, 2, 3, 4]);
assert_eq!(decoder.is_corrupted(&encoded), false);
// Corrupt message
encoded[2] = 1;
encoded[3] = 2;
assert_eq!(decoder.is_corrupted(&encoded), true);
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Decoder
impl RefUnwindSafe for Decoder
impl Send for Decoder
impl Sync for Decoder
impl Unpin for Decoder
impl UnwindSafe for Decoder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more