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