odds

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

APACHE-2.0 License

Downloads
2.7M
Stars
21
Committers
6

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.