Improve docs, no-panic feature, avoid panic in more functions #16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To run everything with no-panic use
cargo test --release --features=no-panic
A bunch of stuff will fail. Miri doesn't complain about UB though, which is great. I basically replaced
clone_within
with the internal implementation that stdlib uses without the assert (as we check them earlier). Butreplace_range
is a super-set of every usage of it, so it would be safer and possibly not even slower to use replace_range for push, insert and remove also.I also found a bug in
try_insert_str
where it didn't properly check for the invariants. And I removed utf8 conversion functions as the stdlib implementation always panics (uses Index trait) and we shouldn't copy them as they are super complex. So the caller can do their conversion the way they want.