The code below compiles without unsafe code but accesses memory out of the allocated range.
use stabby::slice::Slice;
fn main() {
let v = vec![12, 34, 56];
let mut s: Slice<'_, i32> = (&v[..]).into();
println!("{:?}", s);
println!("{:?} {:?}", s.start, s.len);
s.start = s.start.map_addr(|a| a.checked_add(4).unwrap());
println!("{:?}", s);
}
I think Slices and SliceMuts cannot expose their fields directly. Instead, equivalents to core::slice::from_raw_parts* and similar functions should be considered.
The code below compiles without unsafe code but accesses memory out of the allocated range.
I think
Slice
s andSliceMut
s cannot expose their fields directly. Instead, equivalents tocore::slice::from_raw_parts*
and similar functions should be considered.