vector3 2.0.1

A library for dealing with 3D mathematical vectors
Documentation
#[cfg(test)]
mod tests {
    use std::f64::consts::PI;

    use crate::vector3::Vector3;

    #[test]
    fn copy() {
        let a = Vector3::from_i32(1, 2, 3);

        let mut b = a;

        b.x += 1.0;

        assert_ne!(a, b);
    }

    #[test]
    fn add() {
        let a = Vector3::from_i32(3, 2, 1);
        let b = Vector3::from_i32(2, 3, 4);

        assert_eq!(a + b, Vector3::from_i32(5, 5, 5));
    }

    #[test]
    fn sub() {
        let a = Vector3::from_i32(3, 2, 1);
        let b = Vector3::from_i32(2, 3, 4);
        assert_eq!(a - b, Vector3::from_i32(1, -1, -3));
    }

    #[test]
    fn mul() {
        let a = Vector3::from_i32(3, 2, 1);

        assert_eq!(a * 5.0, Vector3::from_i32(15, 10, 5))
    }

    #[test]
    fn div() {
        let a = Vector3::from_i32(5, 15, 30);
        assert_eq!(a / 5.0, Vector3::from_i32(1, 3, 6))
    }

    #[test]
    fn magnitude() {
        let a = Vector3::from_i32(0, 0, 3);

        assert_eq!(a.magnitude(), 3.0);
    }

    #[test]
    fn dot() {
        let a = Vector3::from_i32(1, 2, 3);
        let b = Vector3::from_i32(1, 2, 3);

        assert_eq!(a.dot(&b), 14.0);
    }

    #[test]
    fn cross() {
        let a = Vector3::from_i32(1, 2, 3);
        let b = Vector3::from_i32(3, 2, 1);

        assert_eq!(a.cross(&b), Vector3::from_i32(-4, 8, -4));
    }

    #[test]
    fn angle() {
        let a = Vector3::from_i32(1, 0, 0);
        let b = Vector3::from_i32(0, 0, 1);

        assert_eq!(a.angle(&b) * (180.0 / PI), 90.0);
    }

    #[test]
    fn angle_deg() {
        let a = Vector3::from_i32(1, 0, 0);
        let b = Vector3::from_i32(0, 0, 1);

        assert_eq!(a.angle_deg(&b), 90.0);
    }

    #[test]
    fn normalize() {
        let a = Vector3::new(0.5, 0.0, 0.0);

        assert_eq!(a.normalize(), Vector3::from_i32(1, 0, 0));
    }

    #[test]
    fn serialize_deserialize() {
        let string = Vector3::from_i32(1, 2, 3).to_string();

        assert_eq!(
            Vector3::try_from(string).unwrap(),
            Vector3::from_i32(1, 2, 3)
        )
    }
}