parry3d/utils/
as_bytes.rs1use core::mem;
2use core::slice;
3
4use na::{Point2, Point3, Vector2, Vector3};
5use simba::scalar::RealField;
6
7pub trait AsBytes {
9 fn as_bytes(&self) -> &[u8];
11}
12
13macro_rules! generic_as_bytes_impl(
14 ($T: ident, $dimension: expr) => (
15 impl<N: RealField> AsBytes for $T<N> {
16 #[inline(always)]
17 fn as_bytes(&self) -> &[u8] {
18 unsafe {
19 slice::from_raw_parts(self as *const $T<N> as *const u8, mem::size_of::<N>() * $dimension)
20 }
21 }
22 }
23 )
24);
25
26generic_as_bytes_impl!(Vector2, 2);
27generic_as_bytes_impl!(Point2, 2);
28generic_as_bytes_impl!(Vector3, 3);
29generic_as_bytes_impl!(Point3, 3);
30
31