Crates.io | arraytools |
lib.rs | arraytools |
version | 0.1.5 |
source | src |
created_at | 2019-02-19 08:49:37.51522 |
updated_at | 2019-02-23 07:42:04.005009 |
description | A variety of helpful methods for working with fixed-size arrays. |
homepage | |
repository | https://github.com/scottmcm/arraytools |
max_upload_size | |
id | 115725 |
size | 40,075 |
A variety of helpful methods for working with fixed-size arrays.
Iterator
-like methods over arrays:
use arraytools::ArrayTools;
assert_eq!([1, 2, 3].map(|x| x+1), [2, 3, 4]);
assert_eq!([1, 2].zip(["one", "two"]), [(1, "one"), (2, "two")]);
Ways to simplify array creation:
use arraytools::ArrayTools;
let mut state = 1;
assert_eq!(<[_; 4]>::generate(|| { state *= 2; state }), [2, 4, 8, 16]);
assert_eq!(<[usize; 4]>::indices(), [0, 1, 2, 3]);
let s = "hello".to_string(); // Something `!Copy`
assert_eq!(<[String; 3]>::repeat(s).as_ref_array(), ["hello", "hello", "hello"]);
Conversion to and from homogeneous tuples:
use arraytools::ArrayTools;
let mut array = [2, 3, 5, 7, 11];
assert_eq!(array.into_tuple(), (2, 3, 5, 7, 11));
array = ArrayTools::from_tuple((1, 1, 2, 3, 5));
assert_eq!(array, [1, 1, 2, 3, 5]);
How to use with cargo:
[dependencies]
arraytools = "0.1"
How to use in your 2018-edition crate:
use arraytools::ArrayTools;
Because this needs non-Copy
slice patterns, it needs at least Rust 1.31.0.