pub trait LinearCode {
    type P: PackedField;
    type EncodeError: Error + Send + Sync + 'static;

    // Required methods
    fn dim_bits(&self) -> usize;
    fn min_dist(&self) -> usize;
    fn inv_rate(&self) -> usize;
    fn encode_batch_inplace(
        &self,
        code: &mut [Self::P],
        log_batch_size: usize
    ) -> Result<(), Self::EncodeError>;

    // Provided methods
    fn len(&self) -> usize { ... }
    fn dim(&self) -> usize { ... }
    fn encode_inplace(
        &self,
        code: &mut [Self::P]
    ) -> Result<(), Self::EncodeError> { ... }
    fn encode(
        &self,
        msg: Vec<Self::P>
    ) -> Result<Vec<Self::P>, Self::EncodeError> { ... }
}
Expand description

An encodable linear error-correcting code intended for use in a Brakedown-style polynomial commitment scheme.

This trait represents linear codes with a dimension that is a power of 2, as that property is required for the Brakedown polynomial commitment scheme.

Requirements:

  • len() is a multiple of dim()
  • dim() is a power of 2
  • dim() is a multiple of P::WIDTH

Required Associated Types§

Required Methods§

source

fn dim_bits(&self) -> usize

The base-2 log of the dimension.

source

fn min_dist(&self) -> usize

The minimum distance between codewords.

source

fn inv_rate(&self) -> usize

The reciprocal of the rate, ie. self.len() / self.dim().

source

fn encode_batch_inplace( &self, code: &mut [Self::P], log_batch_size: usize ) -> Result<(), Self::EncodeError>

Encode a message in-place in a provided buffer.

Returns an error if the code buffer does not have capacity for len() field elements.

Provided Methods§

source

fn len(&self) -> usize

The block length.

source

fn dim(&self) -> usize

The dimension.

source

fn encode_inplace(&self, code: &mut [Self::P]) -> Result<(), Self::EncodeError>

Encode a message in-place in a provided buffer.

Returns an error if the code buffer does not have capacity for len() field elements.

source

fn encode(&self, msg: Vec<Self::P>) -> Result<Vec<Self::P>, Self::EncodeError>

Encode a message provided as a vector of packed field elements.

Implementors§

source§

impl<P, F> LinearCode for ReedSolomonCode<P>
where P: PackedFieldIndexable<Scalar = F>, F: BinaryField,

§

type P = P

§

type EncodeError = Error