vec2
pub fn cross<T>(a: &[T; 2], b: &[T; 2]) -> T where T: Sub<T, Output = T>, &'a T: Mul<&'b T, Output = T>,
let mut v = [1_f32, 0_f32]; assert_eq!(vec2::cross(&mut v, &[0_f32, 1_f32]), 1_f32);