3 unstable releases
Uses old Rust 2015
| 0.2.1 | Sep 12, 2019 |
|---|---|
| 0.2.0 | Sep 8, 2019 |
| 0.1.0 | Dec 15, 2016 |
#917 in Rust patterns
7,558,656 downloads per month
Used in 6,973 crates
(14 directly)
9KB
140 lines
Rawpointer adds extra utility methods to raw pointers *const T, *mut T
and NonNull<T>.
Features include:
-
Strided offsets -
.stride_offset(stride, index)make it easy to compute pointer offsets where the index is unsigned and the stride is signed. -
Offsetting methods in general for
NonNull, since it does not have these from libcore -
Post- and preincrement and post- and predecrement methods
- For
p++usep.post_inc(). - For
++pusep.pre_inc(). - For
p--usep.post_dec(). - For
--pusep.pre_dec().
- For
use rawpointer::PointerExt;
unsafe {
// In this example:
// Use .post_inc() to iterate and overwrite the first four
// elements of the array.
let mut xs = [0; 16];
let mut ptr = xs.as_mut_ptr();
let end = ptr.offset(4);
let mut i = 0;
while ptr != end {
*ptr.post_inc() = i;
i += 1;
}
assert_eq!(&xs[..8], &[0, 1, 2, 3, 0, 0, 0, 0]);
}
Safety
See the Rust core::ptr documentation for more information.
Rust Version
This version of the crate requires Rust 1.26 or later
rawpointer
Please read the API documentation here__
__ https://docs.rs/rawpointer/
|build_status|_ |crates|_
.. |build_status| image:: https://travis-ci.org/bluss/rawpointer.svg?branch=master .. _build_status: https://travis-ci.org/bluss/rawpointer
.. |crates| image:: http://meritbadge.herokuapp.com/rawpointer .. _crates: https://crates.io/crates/rawpointer
Recent Changes
-
0.2.0
- Add support for NonNull
- Added more documentation and an example
- Now requires Rust 1.26 or later
-
0.1.0
- Initial release