Crates.io | collect-all |
lib.rs | collect-all |
version | 0.1.0 |
source | src |
created_at | 2023-03-28 21:13:59.993265 |
updated_at | 2023-03-28 21:13:59.993265 |
description | vec! for everything: easily make literals of any collection! |
homepage | https://github.com/dzfrias/collect-all |
repository | https://github.com/dzfrias/collect-all |
max_upload_size | |
id | 823455 |
size | 9,449 |
A macro to create collection literals for any type! Think of
vec!
, but for any collection
type!
Internally, this just uses the
Iterator::collect()
method. Since collect
is powered by
FromIterator
,
implement it to use this macro for your own types!
Basic use, inferring the type of the collection
use collect_all::collect;
use std::collections::HashSet;
let hashset: HashSet<i32> = collect![1, 2, 3];
assert_eq!(HashSet::from_iter([1, 2, 3]), hashset);
Specifying the type in the macro invocation
use collect_all::collect;
use std::collections::HashMap;
let hashmap = collect![HashMap<&str, u8>: ("one", 1), ("two", 2)];
assert_eq!(HashMap::from_iter([("one", 1), ("two", 2)]), hashmap);
Creating with a given capacity
use collect_all::collect;
use std::path::PathBuf;
let pathbuf = collect![PathBuf: "path", "to", "file"; 10];
assert_eq!(PathBuf::from("path/to/file"), pathbuf);
assert!(pathbuf.capacity() >= 10);
Note that this relies on a few things that are not strictly guaranteed for a given collection:
with_capacity
is a method of the target type (for example, see Vec::with_capacity
)Extend
This crate is licensed under the MIT license.