Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bluss/odds

Odds and ends — collection miscellania. Extra functionality for slices, strings and other things
https://github.com/bluss/odds

Last synced: 17 days ago
JSON representation

Odds and ends — collection miscellania. Extra functionality for slices, strings and other things

Awesome Lists containing this project

README

        

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`` to use the trait bound.

- 0.2.17

- Add ``split_aligned_for`` 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 == Fix``

- 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.