vqm 0.1.9

A vector, quaternion, and matrix library targeted at embedded systems and robotics.
Documentation
use vqm::{Vector4d, Vector4df32, Vector4df64};

const _: () = assert!(core::mem::size_of::<Vector4df32>() == 16);
const _: () = assert!(core::mem::align_of::<Vector4df32>() == 16);

const _: () = assert!(core::mem::size_of::<Vector4df64>() == 32);
const _: () = assert!(core::mem::align_of::<Vector4df64>() == 16);

#[cfg(test)]
mod tests {
    use super::*;
    use num_traits::Zero;
    #[cfg(feature = "serde")]
    use serde::{Deserialize, Serialize};

    #[allow(unused)]
    fn is_normal<T: Sized + Send + Sync + Unpin>() {}
    fn is_full<T: Sized + Send + Sync + Unpin + Copy + Clone + Default + PartialEq>() {}
    #[cfg(feature = "serde")]
    fn is_config<
        T: Sized + Send + Sync + Unpin + Copy + Clone + Default + PartialEq + Serialize + for<'a> Deserialize<'a>,
    >() {
    }

    #[test]
    fn normal_types() {
        is_full::<Vector4d<f32>>();
        #[cfg(feature = "serde")]
        is_config::<Vector4d<f32>>();
    }
    #[test]
    fn default() {
        let a: Vector4df32 = Vector4df32::default();
        assert_eq!(Vector4df32::zero(), a);
    }
    #[test]
    fn zero() {
        use num_traits::{Zero, zero};
        let z: Vector4df32 = zero();
        assert!(z.is_zero());
    }
}