viterbi 0.2.0

Pure-Rust, no-unsafe convolutional encoder + Viterbi (MLSE) decoder — CCSDS inner FEC: hard & soft-decision (LLR), rate 1/2 & 1/3, puncturing (2/3–7/8), generic constraint length K<=9.
Documentation
// Author: BolivarTech
// Version: 1.0.0
// Date: 2026-07-02
//! Const-generic state-count validation test (R12).

#[test]
fn generic_state_type_instantiates_and_validates() {
    use viterbi::decoder::{ConfigError, ViterbiDecoder};
    use viterbi::metric::HardHamming;
    use viterbi::params::{CodeParams, ParamError};
    // `ViterbiDecoder<256, _>` instantiates (proving R12); `new` rejects S != 2^(K-1) via `Result`,
    // never a panic — with ccsds params (K=7 => 64), S=256 mismatches.
    let r = ViterbiDecoder::<256, HardHamming>::new(CodeParams::ccsds_r1_2(), 8);
    assert!(matches!(
        r,
        Err(ConfigError::Param(ParamError::StateCountMismatch {
            states: 256,
            k: 7
        }))
    ));
}