nalgebra/geometry/
quaternion_coordinates.rs

1use std::ops::{Deref, DerefMut};
2
3use simba::simd::SimdValue;
4
5use crate::base::coordinates::IJKW;
6use crate::Scalar;
7
8use crate::geometry::Quaternion;
9
10impl<T: Scalar + SimdValue> Deref for Quaternion<T> {
11    type Target = IJKW<T>;
12
13    #[inline]
14    fn deref(&self) -> &Self::Target {
15        unsafe { &*(self as *const Self as *const Self::Target) }
16    }
17}
18
19impl<T: Scalar + SimdValue> DerefMut for Quaternion<T> {
20    #[inline]
21    fn deref_mut(&mut self) -> &mut Self::Target {
22        unsafe { &mut *(self as *mut Self as *mut Self::Target) }
23    }
24}