README.rst
1
2odds
3====
4
5Odds and ends — collection miscellania. Extra functionality related to slices,
6strings and other things.
7
8Please read the `API documentation here`__
9
10__ https://docs.rs/odds/
11
12|build_status|_ |crates|_
13
14.. |build_status| image:: https://travis-ci.org/bluss/odds.svg
15.. _build_status: https://travis-ci.org/bluss/odds
16
17.. |crates| image:: http://meritbadge.herokuapp.com/odds
18.. _crates: https://crates.io/crates/odds
19
20Recent Changes
21--------------
22
23- 0.2.26
24
25 - Proper license files by @raphlinus
26
27- 0.2.25
28
29 - Add ``UnalignedIter``
30 - Add ``SliceCopyIter``
31 - ``CharStr`` now implements more traits.
32
33- 0.2.24
34
35 - Add ``CharStr``
36
37- 0.2.23
38
39 - Add ``RevSlice``, a reversed view of a slice
40 - Add ``encode_utf8`` for encoding chars
41
42- 0.2.22
43
44 - Improve slice's ``.find()`` and ``.rfind()`` and related methods
45 by explicitly unrolling their search loop.
46
47- 0.2.21
48
49 - Add ``slice::rotate_left`` to cyclically rotate elements in a slice.
50
51- 0.2.20
52
53 - Add ``SliceFindSplit`` with ``.find_split, .rfind_split, .find_split_mut,``
54 ``.rfind_split_mut``.
55 - Add ``VecFindRemove`` with ``.find_remove(), .rfind_remove()``.
56
57- 0.2.19
58
59 - Add trait ``SliceFind`` with methods ``.find(&T), .rfind(&T)`` for
60 slices.
61 - Add function ``vec(iterable) -> Vec``
62 - Add prelude module
63
64- 0.2.18
65
66 - Correct ``split_aligned_for<T>`` to use the trait bound.
67
68- 0.2.17
69
70 - Add ``split_aligned_for<T>`` function that splits a byte slice into
71 head and tail slices and a main slice that is a well aligned block
72 of type ``&[T]``. Where ``T`` is a pod type like for example ``u64``.
73 - Add ``Stride, StrideMut`` that moved here from itertools
74 - Add ``mend_slices`` iterator extension that moved here from itertools
75
76- 0.2.16
77
78 - Add ``fix`` function that makes it much easier to use the ``Fix`` combinator.
79 Type inference works much better for the closure this way.
80
81- 0.2.15
82
83 - Add ``std::slice::shared_prefix`` to efficiently compute the shared
84 prefix of two byte slices
85 - Add str extension methods ``.char_chunks(n)`` and ``char_windows(n)``
86 that are iterators that do the char-wise equivalent of slice's chunks and windows
87 iterators.
88
89- 0.2.14
90
91 - Fix ``get_slice`` to check ``start <= end`` as well.
92
93- 0.2.13
94
95 - Add extension trait ``StrSlice`` with method ``get_slice`` that is a slicing
96 method that returns an optional slice.
97
98- 0.2.12
99
100 - Add default feature "std". odds uses ``no_std`` if you opt out of this
101 feature.
102
103- 0.2.11
104
105 - Add type parameter to ``IndexRange`` (that defaults to ``usize``,
106 so that it's non-breaking).
107 - Drop dep on ``unreachable`` (provided in a simpler implementation locally).
108
109- 0.2.10
110
111 - Fix feature flags when using cargo feature ``unstable``
112
113- 0.2.9
114
115 - Add ``slice_unchecked_mut``
116 - Add ``ref_slice``, ``ref_slice_mut``
117
118- 0.2.8
119
120 - Add `VecExt::retain_mut`
121
122- 0.2.7
123
124 - `inline(always)` on `debug_assert_unreachable`
125
126- 0.2.6
127
128 - Add lifetime bounds for Fix for well-formedness (Rust RFC 1214)
129 - Add `StrExt::is_acceptable_index`
130
131- 0.2.5
132
133 - Add `StringExt::insert_str` and `VecExt::splice`
134
135- 0.2.4
136
137 - Add `odds::string::StrExt`, extensions to `&str`.
138
139- 0.2.3
140
141 - Add default for Fix so that ``Fix<T> == Fix<T, T>``
142
143- 0.2.2
144
145 - Add ptr_eq, ref_eq
146
147- 0.2.1
148
149 - Add slice_unchecked
150
151- 0.2.0
152
153 - Removed **Void**, see ``void`` crate instead.
154
155License
156-------
157
158Dual-licensed to be compatible with the Rust project.
159
160Licensed under the Apache License, Version 2.0
161http://www.apache.org/licenses/LICENSE-2.0 or the MIT license
162http://opensource.org/licenses/MIT, at your
163option. This file may not be copied, modified, or distributed
164except according to those terms.
165
166
167