glamour 0.18.0

Strongly typed linear algebra with glam
Documentation
#[cfg(feature = "serde")]
mod serialization {
    use glamour::*;

    #[test]
    fn vector2() {
        assert_eq!(
            serde_json::to_string(&Vector2::<f32> { x: 1.0, y: 2.0 }).unwrap(),
            r#"{"x":1.0,"y":2.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Vector2<f32>>(r#"{"x":1.0,"y":2.0}"#).unwrap(),
            Vector2::<f32> { x: 1.0, y: 2.0 }
        );
        assert_eq!(
            serde_json::from_str::<Vector2<f32>>(r#"[1.0,2.0]"#).unwrap(),
            Vector2::<f32> { x: 1.0, y: 2.0 }
        );
    }

    #[test]
    fn vector3() {
        assert_eq!(
            serde_json::to_string(&Vector3::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0
            })
            .unwrap(),
            r#"{"x":1.0,"y":2.0,"z":3.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Vector3<f32>>(r#"{"x":1.0,"y":2.0,"z":3.0}"#).unwrap(),
            Vector3::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0
            }
        );
        assert_eq!(
            serde_json::from_str::<Vector3<f32>>(r#"[1.0,2.0,3.0]"#).unwrap(),
            Vector3::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0
            }
        );
    }

    #[test]
    fn vector4() {
        assert_eq!(
            serde_json::to_string(&Vector4::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0,
                w: 4.0
            })
            .unwrap(),
            r#"{"x":1.0,"y":2.0,"z":3.0,"w":4.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Vector4<f32>>(r#"{"x":1.0,"y":2.0,"z":3.0,"w":4.0}"#).unwrap(),
            Vector4::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0,
                w: 4.0,
            }
        );
        assert_eq!(
            serde_json::from_str::<Vector4<f32>>(r#"[1.0,2.0,3.0,4.0]"#).unwrap(),
            Vector4::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0,
                w: 4.0
            }
        );
    }

    #[test]
    fn point2() {
        assert_eq!(
            serde_json::to_string(&Point2::<f32> { x: 1.0, y: 2.0 }).unwrap(),
            r#"{"x":1.0,"y":2.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Point2<f32>>(r#"{"x":1.0,"y":2.0}"#).unwrap(),
            Point2::<f32> { x: 1.0, y: 2.0 }
        );
        assert_eq!(
            serde_json::from_str::<Point2<f32>>(r#"[1.0,2.0]"#).unwrap(),
            Point2::<f32> { x: 1.0, y: 2.0 }
        );
    }

    #[test]
    fn point3() {
        assert_eq!(
            serde_json::to_string(&Point3::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0
            })
            .unwrap(),
            r#"{"x":1.0,"y":2.0,"z":3.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Point3<f32>>(r#"{"x":1.0,"y":2.0,"z":3.0}"#).unwrap(),
            Point3::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0
            }
        );
        assert_eq!(
            serde_json::from_str::<Point3<f32>>(r#"[1.0,2.0,3.0]"#).unwrap(),
            Point3::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0
            }
        );
    }

    #[test]
    fn point4() {
        assert_eq!(
            serde_json::to_string(&Point4::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0,
                w: 4.0
            })
            .unwrap(),
            r#"{"x":1.0,"y":2.0,"z":3.0,"w":4.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Point4<f32>>(r#"{"x":1.0,"y":2.0,"z":3.0,"w":4.0}"#).unwrap(),
            Point4::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0,
                w: 4.0,
            }
        );
        assert_eq!(
            serde_json::from_str::<Point4<f32>>(r#"[1.0,2.0,3.0,4.0]"#).unwrap(),
            Point4::<f32> {
                x: 1.0,
                y: 2.0,
                z: 3.0,
                w: 4.0
            }
        );
    }

    #[test]
    fn size2() {
        assert_eq!(
            serde_json::to_string(&Size2::<f32> {
                width: 1.0,
                height: 2.0
            })
            .unwrap(),
            r#"{"width":1.0,"height":2.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Size2<f32>>(r#"{"width":1.0,"height":2.0}"#).unwrap(),
            Size2::<f32> {
                width: 1.0,
                height: 2.0
            }
        );
        assert_eq!(
            serde_json::from_str::<Size2<f32>>(r#"[1.0,2.0]"#).unwrap(),
            Size2::<f32> {
                width: 1.0,
                height: 2.0
            }
        );
    }

    #[test]
    fn size3() {
        assert_eq!(
            serde_json::to_string(&Size3::<f32> {
                width: 1.0,
                height: 2.0,
                depth: 3.0
            })
            .unwrap(),
            r#"{"width":1.0,"height":2.0,"depth":3.0}"#
        );
        assert_eq!(
            serde_json::from_str::<Size3<f32>>(r#"{"width":1.0,"height":2.0,"depth":3.0}"#)
                .unwrap(),
            Size3::<f32> {
                width: 1.0,
                height: 2.0,
                depth: 3.0
            }
        );
        assert_eq!(
            serde_json::from_str::<Size3<f32>>(r#"[1.0,2.0,3.0]"#).unwrap(),
            Size3::<f32> {
                width: 1.0,
                height: 2.0,
                depth: 3.0
            }
        );
    }

    #[test]
    fn matrix2() {
        assert_eq!(
            serde_json::to_string(&Matrix2::<f32>::IDENTITY).unwrap(),
            r#"[1.0,0.0,0.0,1.0]"#
        );
        assert_eq!(
            serde_json::from_str::<Matrix2<f32>>("[1.0,0.0,0.0,1.0]").unwrap(),
            Matrix2::<f32>::IDENTITY
        );
    }

    #[test]
    fn matrix3() {
        assert_eq!(
            serde_json::to_string(&Matrix3::<f32>::IDENTITY).unwrap(),
            r#"[1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]"#
        );
        assert_eq!(
            serde_json::from_str::<Matrix3<f32>>("[1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]").unwrap(),
            Matrix3::<f32>::IDENTITY
        );
    }

    #[test]
    fn matrix4() {
        assert_eq!(
            serde_json::to_string(&Matrix4::<f32>::IDENTITY).unwrap(),
            r#"[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]"#
        );
        assert_eq!(
            serde_json::from_str::<Matrix4<f32>>(
                "[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]"
            )
            .unwrap(),
            Matrix4::<f32>::IDENTITY
        );
    }

    #[test]
    fn transform2() {
        assert_eq!(
            serde_json::to_string(&Transform2::<f32, f32>::IDENTITY).unwrap(),
            r#"[1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]"#
        );
        assert_eq!(
            serde_json::from_str::<Transform2<f32, f32>>("[1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]")
                .unwrap(),
            Transform2::<f32, f32>::IDENTITY
        );
    }

    #[test]
    fn transform3() {
        assert_eq!(
            serde_json::to_string(&Transform3::<f32, f32>::IDENTITY).unwrap(),
            r#"[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]"#
        );
        assert_eq!(
            serde_json::from_str::<Transform3<f32, f32>>(
                "[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]"
            )
            .unwrap(),
            Transform3::<f32, f32>::IDENTITY
        );
    }

    #[test]
    fn angle() {
        assert_eq!(
            serde_json::to_string(&Angle::from_radians(1.0)).unwrap(),
            "1.0"
        );
        assert_eq!(
            serde_json::from_str::<Angle<f32>>("1.0").unwrap(),
            Angle::from_radians(1.0)
        );
    }
}