use crate::{Vector2,Vector3,Vector4}; pub struct Matrix2 { pub x_axis: T, pub y_axis: T, } pub struct Matrix3 { pub x_axis: T, pub y_axis: T, pub z_axis: T, } pub struct Matrix4 { pub x_axis: T, pub y_axis: T, pub z_axis: T, pub w_axis: T, } crate::impl_matrix_named_fields!( //outer struct ( (Matrix2 { x_axis, y_axis }, 2), (Matrix3 { x_axis, y_axis, z_axis }, 3), (Matrix4 { x_axis, y_axis, z_axis, w_axis }, 4) ), //inner struct ( (Vector2 { x, y }, 2), (Vector3 { x, y, z }, 3), (Vector4 { x, y, z, w }, 4) ) ); //Special case 3x3 matrix operations because I cba to write macros for the arbitrary cases crate::impl_matrix_3x3!();