|0.4.1||Sep 11, 2019|
|0.3.2||Jan 17, 2018|
|0.3.1||Nov 19, 2017|
|0.3.0||Dec 22, 2016|
|0.1.0||Feb 16, 2016|
#869 in Rust patterns
195 downloads per month
Used in 2 crates (via gll)
“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.
- use_std Enabled by default, disable to be no_std-compatible.
- Inspired by Gankro’s exposition of sound unchecked indexing.
Also now described in: You can't spell trust without Rust. Chapter 6.3 hacking generativity onto rust. Gankro's master's thesis.
- Remove the ability to clone non- FixedLength Containers, because allowing to clone a container was wrong in the presencen of the length changing .push()/.insert() methods on vectors in containers.
- Add method .make_twin() that allows two or more containers to use the same trusted indices, if they are the same size
- Add new marker trait FixedLength for use in make_twin.
- Remove the branded raw pointer features, since they need revision (See #11)
- Fix bug in the proof of .join_cover()
- Fix signatures in ContiguousMut so that it now uses &mut correctly
- Update dev-dependencies
- Add Ord, PartialOrd impls for Range
- Now using Rust 2018 and requiring Rust 1.32 or later.
- Fix future compatibility warning about pointer casts.
- Add Ord, Hash impls for Index and Hash for Range
- Fixes in tests
- Add crates.io categories
- Tweak implementation traits a bit, PointerRange, Provable, ContainerRef, make them unsafe where needed.
- Add Container::range_of
- Docs are better
- Refactor most of the crate, prepare for other backends than slices
- Expose PIndex, PRange, PSlice which are the pointer-based equivalents of safe trusted indices and ranges. Some algos are better when using a raw pointer representation (for example: lower bound). Since we don't have HKT, traitifying all of this is not so pleasant and is not yet complete.
- New feature: can combine trusted indices with push/insert on Vec.
- Add binary_search_by and lower_bound to algorithms. Algorithms don't require T: Debug anymore.
- Point documentation to docs.rs
- Add some docs and tests
- Fix Range::join_cover_both to use ProofAdd
- Add IndexingError and use it for all Results.
- Add ProofAdd and use it in Range::join, Range::join_cover
- Make Index<'id>, Range<'id> Send + Sync
- First release
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.