mod private
{
pub use bytemuck :: { Pod };
pub trait AsBytes
{
fn as_bytes( &self ) -> &[ u8 ];
#[ inline ]
fn to_bytes_vec( &self ) -> Vec< u8 >
{
self.as_bytes().to_vec()
}
#[ inline ]
fn byte_size( &self ) -> usize
{
self.as_bytes().len()
}
fn len( &self ) -> usize;
#[ inline ]
fn is_empty( &self ) -> bool
{
self.len() == 0
}
}
impl< T: Pod > AsBytes for ( T, )
{
#[ inline ]
fn as_bytes( &self ) -> &[ u8 ]
{
bytemuck ::bytes_of( &self.0 )
}
#[ inline ]
fn byte_size( &self ) -> usize
{
core ::mem ::size_of :: < T >()
}
#[ inline ]
fn len( &self ) -> usize
{
1
}
}
impl< T: Pod > AsBytes for Vec< T >
{
#[ inline ]
fn as_bytes( &self ) -> &[ u8]
{
bytemuck ::cast_slice(self)
}
#[ inline ]
fn byte_size( &self ) -> usize
{
self.len() * core ::mem ::size_of :: < T >()
}
#[ inline ]
fn len( &self ) -> usize
{
self.len()
}
}
impl< T: Pod > AsBytes for [T]
{
#[ inline ]
fn as_bytes( &self ) -> &[ u8]
{
bytemuck ::cast_slice(self)
}
#[ inline ]
fn byte_size( &self ) -> usize
{
core ::mem ::size_of_val(self)
}
#[ inline ]
fn len( &self ) -> usize
{
self.len()
}
}
impl< T: Pod, const N: usize > AsBytes for [T; N]
{
#[ inline ]
fn as_bytes( &self ) -> &[ u8]
{
bytemuck ::cast_slice(self)
}
#[ inline ]
fn byte_size( &self ) -> usize
{
N * core ::mem ::size_of :: < T >()
}
#[ inline ]
fn len( &self ) -> usize
{
N
}
}
}
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use own :: *;
#[ allow( unused_imports ) ]
pub mod own
{
use super :: *;
#[ doc( inline ) ]
pub use orphan :: *;
}
#[ allow( unused_imports ) ]
pub mod orphan
{
use super :: *;
#[ doc( inline ) ]
pub use exposed :: *;
}
#[ allow( unused_imports ) ]
pub mod exposed
{
use super :: *;
#[ doc( inline ) ]
pub use prelude :: *;
}
#[ allow( unused_imports ) ]
pub mod prelude
{
use super :: *;
pub use private ::AsBytes;
}