ps-ecc 0.1.0-9

Generates Reed-Solomon error correction codes.
Documentation
use std::ops::Index;

use crate::Polynomial;

impl Index<usize> for Polynomial {
    type Output = u8;

    fn index(&self, index: usize) -> &Self::Output {
        self.coefficients.get(index).unwrap_or(&0)
    }
}

#[cfg(test)]
#[allow(clippy::expect_used)]
mod tests {
    use crate::Polynomial;

    #[test]
    fn index_usize_within_bounds() {
        let p = Polynomial::from_slice(&[3, 7, 0, 5]).expect("valid polynomial");

        assert_eq!(p[0usize], 3);
        assert_eq!(p[1usize], 7);
        assert_eq!(p[2usize], 0);
        assert_eq!(p[3usize], 5);
    }

    #[test]
    fn index_usize_out_of_bounds_returns_zero() {
        let p = Polynomial::from_slice(&[1, 2]).expect("valid polynomial");

        assert_eq!(p[2usize], 0);
        assert_eq!(p[100usize], 0);
    }

    #[test]
    fn index_usize_empty_polynomial() {
        let p = Polynomial::from_slice(&[]).expect("valid polynomial");

        assert_eq!(p[0usize], 0);
    }
}