array-util 1.0.2

no_std array helpers available without nightly
Documentation
  • Coverage
  • 100%
    31 out of 31 items documented26 out of 31 items with examples
  • Size
  • Source code size: 56.75 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.67 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 10s Average build duration of successful builds.
  • all releases: 10s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Daniel-Aaron-Bloom/array-util
    3 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Daniel-Aaron-Bloom

array-util

no_std array helpers available without nightly.

Description

Many useful array and slice methods are currently gated by nightly features, though their general functionality and interface is essentially stable. As such this crate provides stable alternatives to the following features, often the same underlying implementation as the current nightly version:

Usage

Users can either import an Ext trait (SliceExt, ArrayExt, or SliceOfArrayExt) traits to bring in the desired methods, or use the bare functions. Note that trait methods have the _ext suffix to avoid collision with the core library methods.

use array_util::ArrayExt;

let a = ["1", "2", "3"];
let b = a.try_map_ext(|v| v.parse::<u32>()).unwrap().map(|v| v + 1);
assert_eq!(b, [2, 3, 4]);

let a = ["1", "2a", "3"];
let b = a.try_map_ext(|v| v.parse::<u32>());
assert!(b.is_err());
let a = ["1", "2", "3"];
let b = array_util::try_map(a, |v| v.parse::<u32>()).unwrap().map(|v| v + 1);
assert_eq!(b, [2, 3, 4]);

let a = ["1", "2a", "3"];
let b = array_util::try_map(a, |v| v.parse::<u32>());
assert!(b.is_err());

Limitations

These functions aren't stabilized because they rely on undecided behaviors. For example, "should compile-time errors be generated for 0 length arrays?" or "What should the associated types and traits of Try be?". As these questions remain unresolved, reliance on the particular answers this crate has chosen in it's implementation may make porting to the eventual stabilized version more painful. If you're just calling functions, you'll probably be fine, but try to avoid using the Ext traits as bounds.

License: MIT