Sound unchecked indexing using “generativity”; a type system approach to indices, pointers and ranges that are trusted to be in bounds.
APACHE-2.0 License
“Sound unchecked indexing” in Rust using “generativity” (branding by unique lifetime parameter).
Extremely experimental, but somewhat promising & exciting.
Main focus is on index ranges, not just single indices.
|build_status|_ |crates|_
.. |build_status| image:: https://travis-ci.org/bluss/indexing.svg?branch=master .. _build_status: https://travis-ci.org/bluss/indexing
.. |crates| image:: http://meritbadge.herokuapp.com/indexing .. _crates: https://crates.io/crates/indexing
Crate Features:
use_std
Enabled by default, disable to be no_std
-compatible.sound unchecked indexing
__.__ https://www.reddit.com/r/rust/comments/3oo0oe/sound_unchecked_indexing_with_lifetimebased_value/
Also now described in: You can't spell trust without Rust <https://raw.githubusercontent.com/Gankro/thesis/master/thesis.pdf>
_. Chapter 6.3 hacking generativity onto rust. Gankro's master's thesis.
0.4.1
FixedLength
Containers,0.4.0
.make_twin()
that allows two or more containersFixedLength
for use in make_twin
..join_cover()
ContiguousMut
so that it now uses &mut
correctlyOrd, PartialOrd
impls for Range
0.3.2
Ord, Hash
impls for Index
and Hash
for Range
0.3.1
0.3.0
PointerRange
, Provable
,ContainerRef
, make them unsafe
where needed.Container::range_of
0.2.0
PIndex, PRange, PSlice
which are the pointer-based equivalents0.1.2
binary_search_by
and lower_bound
to algorithms. AlgorithmsT: Debug
anymore.0.1.1
0.1.0
0.1.0-alpha3
0.1.0-alpha2
0.1.0-alpha1
Dual-licensed to be compatible with the Rust project.
Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 or the MIT license http://opensource.org/licenses/MIT, at your option. This file may not be copied, modified, or distributed except according to those terms.