From 1a742a4c90ca285c43a4c06ee97cb36c4863fcc5 Mon Sep 17 00:00:00 2001 From: Intege-rs Date: Sat, 12 Apr 2025 23:25:45 -0400 Subject: [PATCH] range func --- sub/core/src/data.rs | 18 +++++++++++++++--- sub/core/src/lib.rs | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/sub/core/src/data.rs b/sub/core/src/data.rs index 86c08eb..b61d11a 100644 --- a/sub/core/src/data.rs +++ b/sub/core/src/data.rs @@ -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(value: &mut T) -> &mut [u8] { core::slice::from_raw_parts_mut(ptr, core::mem::size_of::()) } - /// converts a non mutable reference into a mutable one #[inline(always)] pub unsafe fn mutify(nr: &T) -> &mut T { @@ -46,7 +45,20 @@ pub fn distance(p1: impl As, p2: impl As) -> usize { } } +/// Utility function to create ranges from the start + length +pub fn range + Copy>( + start: impl As, + len: impl As +) -> core::ops::Range { + 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() } + } } \ No newline at end of file diff --git a/sub/core/src/lib.rs b/sub/core/src/lib.rs index 891db75..b194dab 100644 --- a/sub/core/src/lib.rs +++ b/sub/core/src/lib.rs @@ -40,6 +40,7 @@ pub mod prelude { slicify_mut, statify, statify_mut, + range, Zeroed }; pub use crate::arrays::{