range func
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use crate::cast_traits::As;
|
||||
use core::cmp::Ordering;
|
||||
use core::mem::MaybeUninit;
|
||||
use crate::cast_traits::As;
|
||||
|
||||
/// Converts reference of struct to binary slice
|
||||
#[inline(always)]
|
||||
@@ -16,7 +16,6 @@ pub unsafe fn slicify_mut<T>(value: &mut T) -> &mut [u8] {
|
||||
core::slice::from_raw_parts_mut(ptr, core::mem::size_of::<T>())
|
||||
}
|
||||
|
||||
|
||||
/// converts a non mutable reference into a mutable one
|
||||
#[inline(always)]
|
||||
pub unsafe fn mutify<T>(nr: &T) -> &mut T {
|
||||
@@ -46,7 +45,20 @@ pub fn distance(p1: impl As<usize>, p2: impl As<usize>) -> usize {
|
||||
}
|
||||
}
|
||||
|
||||
/// Utility function to create ranges from the start + length
|
||||
pub fn range<T: core::ops::Add<Output=T> + Copy>(
|
||||
start: impl As<T>,
|
||||
len: impl As<T>
|
||||
) -> core::ops::Range<T> {
|
||||
let s = start.cast();
|
||||
let l = len.cast();
|
||||
s..s + l
|
||||
}
|
||||
|
||||
|
||||
pub unsafe trait Zeroed: Sized {
|
||||
#[inline(always)]
|
||||
fn zeroed() -> Self { unsafe { core::mem::zeroed() } }
|
||||
fn zeroed() -> Self {
|
||||
unsafe { core::mem::zeroed() }
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,7 @@ pub mod prelude {
|
||||
slicify_mut,
|
||||
statify,
|
||||
statify_mut,
|
||||
range,
|
||||
Zeroed
|
||||
};
|
||||
pub use crate::arrays::{
|
||||
|
||||
Reference in New Issue
Block a user