replace uarray with Pod
This commit is contained in:
@@ -44,8 +44,4 @@ pub fn distance(p1: impl As<usize>, p2: impl As<usize>) -> usize {
|
|||||||
Ordering::Greater => p1 - p2,
|
Ordering::Greater => p1 - p2,
|
||||||
Ordering::Equal => 0,
|
Ordering::Equal => 0,
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
pub fn uarray<const LEN: usize, T: Sized>() -> [T;LEN] {
|
|
||||||
unsafe { MaybeUninit::uninit().assume_init() }
|
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
// Internal modules
|
// Internal modules
|
||||||
//
|
//
|
||||||
pub mod cast_traits;
|
pub mod cast_traits;
|
||||||
|
pub mod pod;
|
||||||
pub mod data;
|
pub mod data;
|
||||||
pub mod arrays;
|
pub mod arrays;
|
||||||
pub mod branching;
|
pub mod branching;
|
||||||
@@ -33,7 +34,6 @@ pub mod prelude {
|
|||||||
slicify_mut,
|
slicify_mut,
|
||||||
statify,
|
statify,
|
||||||
statify_mut,
|
statify_mut,
|
||||||
uarray
|
|
||||||
};
|
};
|
||||||
pub use crate::arrays::{
|
pub use crate::arrays::{
|
||||||
fill_with,
|
fill_with,
|
||||||
@@ -50,6 +50,7 @@ pub mod prelude {
|
|||||||
pub use crate::time::dur;
|
pub use crate::time::dur;
|
||||||
pub use crate::fnv1::*;
|
pub use crate::fnv1::*;
|
||||||
pub use crate::pstruct::struct_offset;
|
pub use crate::pstruct::struct_offset;
|
||||||
|
pub use crate::pod::Pod;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod public {
|
pub mod public {
|
||||||
|
|||||||
20
sub/core/src/pod.rs
Normal file
20
sub/core/src/pod.rs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
use core::mem::MaybeUninit;
|
||||||
|
|
||||||
|
/// Plain Old data type
|
||||||
|
pub trait Pod: Copy + 'static {
|
||||||
|
fn uninit() -> Self { unsafe { MaybeUninit::uninit().assume_init() } }
|
||||||
|
fn zeroed() -> Self { unsafe { MaybeUninit::zeroed().assume_init() } }
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! primitive {
|
||||||
|
($($p:ty),*) => {
|
||||||
|
$(impl Pod for $p {})*
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
primitive!(u8, u16, u32, u64, u128);
|
||||||
|
primitive!(i8, i16, i32, i64, i128);
|
||||||
|
primitive!(f32, f64, usize, isize);
|
||||||
|
primitive!(());
|
||||||
|
|
||||||
|
impl<const LEN: usize, T: Pod> Pod for [T;LEN] {}
|
||||||
Reference in New Issue
Block a user