Expand description
§Velcro
A set of macros for conveniently initializing collections from Rust’s std
and iterators. All of the macros support the unary ..
operator which “spreads”
the values of another collection or iterator.
velcro::vec!
is a drop-in replacement for std::vec!
. All functionality of
the std
macro is supported without overhead, but it also supports spreading values with the ..
operator.
§Examples
use velcro::{hash_map, iter, vec};
assert_eq!(vec![0, 1, ..(2..7)], vec![0, 1, 2, 3, 4, 5, 6]);
let other = vec![3, 4, 5];
assert_eq!(vec![0, 1, 2, ..&other, 6], vec![0, 1, 2, 3, 4, 5, 6]);
let whitespace = iter![' ', '\t', '\r', '\n'];
let map = hash_map! {
..('0'..='9'): "digit",
..('a'..='z'): "lower",
..('A'..='Z'): "upper",
..whitespace: "whitespace",
'.': "punctuation",
',': "punctuation",
};
assert_eq!(map[&'x'], "lower");
assert_eq!(map[&'\r'], "whitespace");
assert_eq!(map[&'.'], "punctuation");
§Contributing
Contributions are welcome! Check the Github issue tracker
for issues marked with good first issue
or help wanted
for issues that are reasonably complete in their description. Feel free to ask for
help or clarification by leaving comments on the issue.
This project uses Travis for continuous integration. Please check that your changes build and all of the tests pass:
- https://travis-ci.com/github/peterjoel/velcro
§Help
For help, questions or to report an issue, please use the Github issue tracker.
Macros§
- btree_
map - An initializer for
BTreeMap
, allowing for entries to be specified individually or for the same value to be given to multiple keys using the..
operator. - btree_
map_ from - An initializer for
BTreeMap
that works the same asbtree_map!
except that values can be of any type that can be converted into the collection’s item type via anInto
implementation. - btree_
set - An initializer for
BTreeSet
, allowing for items to be specified individually or “spread” using the..
operator. - btree_
set_ from - An initializer for
BTreeSet
that works the same asbtree_set!
except that values can be of any type that can be converted into the collection’s item type. - hash_
map - An initializer for
HashMap
, allowing for entries to be specified individually or for the same value to be given to multiple keys using the..
operator. - hash_
map_ from - An initializer for
HashMap
that works the same ashash_map!
except that values can be of any type that can be converted into the collection’s item type via anInto
implementation. - hash_
set - An initializer for
HashSet
, allowing for items to be specified individually or “spread” using the..
operator. - hash_
set_ from - An initializer for
HashSet
that works the same ashash_set!
except that values can be of any type that can be converted into the collection’s item type via anInto
implementation. - iter
- Creates an iterator, over the given values. Other collections and iterators
may also be interspersed, or “spread”, using the
..
operator. - iter_
from - Creates an iterator, over the given values. Works the same as
iter
except that values may be any type that can be converted to the iterator item type via anInto
implementation. - linked_
list - An initializer for
LinkedList
, allowing for items to be specified individually or “spread” using the..
operator. - linked_
list_ from - An initializer for
LinkedList
that works the same aslinked_list!
except that values can be of any type that can be converted into the collection’s item type via anInto
implementation. - map_
iter - Creates an iterator over pairs of values, expressed with map-like syntax.
Other collections and iterators may also be interspersed, or “spread”, using the
..
operator. - map_
iter_ from - Creates an iterator over pairs of values in the same way as
map_iter
except that values are converted into the expected type using anInto
implementation. - vec
- A more flexible vector initialization macro.
velcro::vec!
is a drop-in replacement for the built-instd::vec!
macro, but with extra functionality. In particular, it adds the..
spread operator, which can insert multiple elements at once, provided that the expression implementsIntoIterator
, which is the case for all iterators and most collections. - vec_
from - Works the same as
vec!
except that values may be of any type that can be converted into the item type via an implementation ofInto
.