Trait rawpointer::PointerExt
source · [−]pub trait PointerExt: Copy {
unsafe fn offset(self, i: isize) -> Self;
unsafe fn add(self, i: usize) -> Self { ... }
unsafe fn sub(self, i: usize) -> Self { ... }
unsafe fn pre_inc(&mut self) -> Self { ... }
unsafe fn post_inc(&mut self) -> Self { ... }
unsafe fn pre_dec(&mut self) -> Self { ... }
unsafe fn post_dec(&mut self) -> Self { ... }
unsafe fn inc(&mut self) { ... }
unsafe fn dec(&mut self) { ... }
unsafe fn stride_offset(self, s: isize, index: usize) -> Self { ... }
}
Expand description
Extension methods for raw pointers
Required methods
Provided methods
Increment the pointer by 1, and return its new value.
Equivalent to the C idiom ++ptr
.
Increment the pointer by 1, but return its old value.
Equivalent to the C idiom ptr++
.
Decrement the pointer by 1, and return its new value.
Equivalent to the C idiom --ptr
.
Decrement the pointer by 1, but return its old value.
Equivalent to the C idiom ptr--
.
unsafe fn stride_offset(self, s: isize, index: usize) -> Self
unsafe fn stride_offset(self, s: isize, index: usize) -> Self
Offset the pointer by s
multiplied by index
.
Implementations on Foreign Types
NonNull<T>
supports the same offsetting methods under the same
safety constraints as the other raw pointer implementations.
There is no difference - both when offsetting *mut T
and NonNull<T>
,
the offset is only well defined if we remain inside the same object or
one-past the end, and we can never land in a null pointer while obeying
those rules.