Crates.io | reed-solomon |
lib.rs | reed-solomon |
version | 0.2.1 |
source | src |
created_at | 2016-10-13 17:25:33.430203 |
updated_at | 2018-01-20 19:02:16.198711 |
description | Reed-Solomon BCH encoder and decoder with support of no_std environment |
homepage | |
repository | https://github.com/mersinvald/reed-solomon-rs |
max_upload_size | |
id | 6838 |
size | 57,279 |
Reed-Solomon BCH encoder and decoder implemented in Rust. This is a port of python implementation from Wikiversity
[dependencies]
reed-solomon = "0.2"
extern crate reed_solomon
extern crate reed_solomon;
use reed_solomon::Encoder;
use reed_solomon::Decoder;
fn main() {
let data = b"Hello World!";
// Length of error correction code
let ecc_len = 8;
// Create encoder and decoder with
let enc = Encoder::new(ecc_len);
let dec = Decoder::new(ecc_len);
// Encode data
let encoded = enc.encode(&data[..]);
// Simulate some transmission errors
let mut corrupted = *encoded;
for i in 0..4 {
corrupted[i] = 0x0;
}
// Try to recover data
let known_erasures = [0];
let recovered = dec.correct(&mut corrupted, Some(&known_erasures)).unwrap();
let orig_str = std::str::from_utf8(data).unwrap();
let recv_str = std::str::from_utf8(recovered.data()).unwrap();
println!("message: {:?}", orig_str);
println!("original data: {:?}", data);
println!("error correction code: {:?}", encoded.ecc());
println!("corrupted: {:?}", corrupted);
println!("repaired: {:?}", recv_str);
}