odds
====
Odds and ends — collection miscellania. Extra functionality related to slices,
strings and other things.
Please read the `API documentation here`__
__ https://docs.rs/odds/
|build_status|_ |crates|_
.. |build_status| image:: https://travis-ci.org/bluss/odds.svg
.. _build_status: https://travis-ci.org/bluss/odds
.. |crates| image:: http://meritbadge.herokuapp.com/odds
.. _crates: https://crates.io/crates/odds
Recent Changes
--------------
- 0.4.0
- Remove MendSlices
- Remove deprecated items
- Updated rawpointer dependency
- Updated dev-dependencies
- 0.3.1
- Go back to the 0.2.x formulation of the ``fix`` function, because the new
fancy version relied on a type system detail that has been changed in Rust
— closures must not be able to use their own type in their arguments. Fair
enough.
- 0.3.0
- Update the ``fix`` and ``Fix`` closure combinator to not use
dynamic dispatch! new formulation was an idea by @talchas
- Implement Error for ``EncodeUtf8Error`` by George Burton
- Depend on crate ``rawslice`` for its ``SliceIter``.
- More features for ``SliceIter`` and ``SliceCopyIter``: access start/end
pointer, implement ``Index``.
- Add ``BlockedIter``
- Remove functionality that is unused or directly conflicts with other
new features, for example in std:
+ ``Vec::splice``. Use the std splice.
- Deprecate functionality that has been added to std:
+ ``String::insert_str``
+ ``str::rep``
+ ``ptr_eq``, ``ref_eq``: use ``std::ptr::eq``
- Deprecate functionality that has moved:
+ ``get_unchecked``, ``slice_unchecked``: use ``unchecked-index`` crate instead
- Vec functionality is now opt-in under feature ``std-vec``.
String functionality the same under ``std-string``.
The crate is now ``no_std`` by default.
- Proper license files added to the repo, thanks @raphlinus!
- 0.2.26
- Proper license files by @raphlinus
- 0.2.25
- Add ``UnalignedIter``
- Add ``SliceCopyIter``
- ``CharStr`` now implements more traits.
- 0.2.24
- Add ``CharStr``
- 0.2.23
- Add ``RevSlice``, a reversed view of a slice
- Add ``encode_utf8`` for encoding chars
- 0.2.22
- Improve slice's ``.find()`` and ``.rfind()`` and related methods
by explicitly unrolling their search loop.
- 0.2.21
- Add ``slice::rotate_left`` to cyclically rotate elements in a slice.
- 0.2.20
- Add ``SliceFindSplit`` with ``.find_split, .rfind_split, .find_split_mut,``
``.rfind_split_mut``.
- Add ``VecFindRemove`` with ``.find_remove(), .rfind_remove()``.
- 0.2.19
- Add trait ``SliceFind`` with methods ``.find(&T), .rfind(&T)`` for
slices.
- Add function ``vec(iterable) -> Vec``
- Add prelude module
- 0.2.18
- Correct ``split_aligned_for<T>`` to use the trait bound.
- 0.2.17
- Add ``split_aligned_for<T>`` function that splits a byte slice into
head and tail slices and a main slice that is a well aligned block
of type ``&[T]``. Where ``T`` is a pod type like for example ``u64``.
- Add ``Stride, StrideMut`` that moved here from itertools
- Add ``mend_slices`` iterator extension that moved here from itertools
- 0.2.16
- Add ``fix`` function that makes it much easier to use the ``Fix`` combinator.
Type inference works much better for the closure this way.
- 0.2.15
- Add ``std::slice::shared_prefix`` to efficiently compute the shared
prefix of two byte slices
- Add str extension methods ``.char_chunks(n)`` and ``char_windows(n)``
that are iterators that do the char-wise equivalent of slice's chunks and windows
iterators.
- 0.2.14
- Fix ``get_slice`` to check ``start <= end`` as well.
- 0.2.13
- Add extension trait ``StrSlice`` with method ``get_slice`` that is a slicing
method that returns an optional slice.
- 0.2.12
- Add default feature "std". odds uses ``no_std`` if you opt out of this
feature.
- 0.2.11
- Add type parameter to ``IndexRange`` (that defaults to ``usize``,
so that it's non-breaking).
- Drop dep on ``unreachable`` (provided in a simpler implementation locally).
- 0.2.10
- Fix feature flags when using cargo feature ``unstable``
- 0.2.9
- Add ``slice_unchecked_mut``
- Add ``ref_slice``, ``ref_slice_mut``
- 0.2.8
- Add `VecExt::retain_mut`
- 0.2.7
- `inline(always)` on `debug_assert_unreachable`
- 0.2.6
- Add lifetime bounds for Fix for well-formedness (Rust RFC 1214)
- Add `StrExt::is_acceptable_index`
- 0.2.5
- Add `StringExt::insert_str` and `VecExt::splice`
- 0.2.4
- Add `odds::string::StrExt`, extensions to `&str`.
- 0.2.3
- Add default for Fix so that ``Fix<T> == Fix<T, T>``
- 0.2.2
- Add ptr_eq, ref_eq
- 0.2.1
- Add slice_unchecked
- 0.2.0
- Removed **Void**, see ``void`` crate instead.
License
-------
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.