fixnum 0.9.5

Fixed-point numbers with explicit rounding
Documentation
#![cfg(feature = "rkyv")]

use anyhow::Result;
use fixnum::*;
use rkyv::rancor::Error;

#[test]
fn rkyv_basic() -> Result<()> {
    test_fixed_point! {
        case (a: FixedPoint, b: FixedPoint) => {
            let a_ = rkyv::to_bytes::<Error>(&a)?;
            let b_ = rkyv::to_bytes::<Error>(&b)?;
            assert_eq!(
                rkyv::deserialize::<FixedPoint, Error>(
                    rkyv::access::<<FixedPoint as rkyv::Archive>::Archived, Error>(&a_)?)?, a);
            assert_eq!(
                rkyv::deserialize::<FixedPoint, Error>(
                    rkyv::access::<<FixedPoint as rkyv::Archive>::Archived, Error>(&b_)?)?, b);


            let ab = vec![a,b];
            let ab_ = rkyv::to_bytes::<Error>(&ab)?;
            let ab_access = rkyv::access::<<Vec<FixedPoint> as rkyv::Archive>::Archived, Error>(&ab_)?;
            assert_eq!(rkyv::deserialize::<FixedPoint, Error>(&ab_access[0])?, a);
            assert_eq!(rkyv::deserialize::<FixedPoint, Error>(&ab_access[1])?, b);
        },
        all {
            (fp!(64.0), fp!(13.13));
        },
    };
    Ok(())
}