Skip to main content

encode

Function encode 

Source
pub fn encode(data: [&[u8]; 6], parity: [&mut [u8]; 3]) -> Result<(), Error>
Expand description

Computes the M parity blocks from K data blocks.

Data blocks are assigned indices 0..K and parity blocks indices K..N. All blocks must have the same length, which must be a positive multiple of BLOCK_ALIGNMENT.

§Errors

§Example

use simd_rs63::{encode, BLOCK_ALIGNMENT};

let block_size = 4 * BLOCK_ALIGNMENT;

let data = [
    vec![0; block_size],
    vec![1; block_size],
    vec![2; block_size],
    vec![3; block_size],
    vec![4; block_size],
    vec![5; block_size],
];

let mut parity = [
    vec![0; block_size],
    vec![0; block_size],
    vec![0; block_size],
];

let data_shards = [
    data[0].as_slice(),
    data[1].as_slice(),
    data[2].as_slice(),
    data[3].as_slice(),
    data[4].as_slice(),
    data[5].as_slice(),
];

let [p0, p1, p2] = &mut parity;
let parity_shards = [p0.as_mut_slice(), p1.as_mut_slice(), p2.as_mut_slice()];

encode(data_shards, parity_shards).unwrap();