orx_concurrent_iter/implementations/jagged_arrays/
raw_slice.rs1use super::as_raw_slice::AsRawSlice;
2
3pub struct RawSlice<T> {
7 ptr: *const T,
8 len: usize,
9}
10
11impl<'a, T> From<&'a [T]> for RawSlice<T> {
12 fn from(value: &'a [T]) -> Self {
13 Self {
14 ptr: value.as_ptr(),
15 len: value.len(),
16 }
17 }
18}
19
20impl<T> RawSlice<T> {
21 pub(super) fn new(ptr: *const T, len: usize) -> Self {
22 Self { ptr, len }
23 }
24}
25
26impl<T> AsRawSlice<T> for RawSlice<T> {
27 fn ptr(&self) -> *const T {
28 self.ptr
29 }
30
31 fn length(&self) -> usize {
32 self.len
33 }
34
35 fn raw_slice(&self, begin: usize, len: usize) -> RawSlice<T> {
36 debug_assert!(begin + len <= self.len);
37 let ptr = unsafe { self.ptr.add(begin) };
38 Self::new(ptr, len)
39 }
40}