collect-all

Crates.iocollect-all
lib.rscollect-all
version0.1.0
sourcesrc
created_at2023-03-28 21:13:59.993265
updated_at2023-03-28 21:13:59.993265
descriptionvec! for everything: easily make literals of any collection!
homepagehttps://github.com/dzfrias/collect-all
repositoryhttps://github.com/dzfrias/collect-all
max_upload_size
id823455
size9,449
Diego Frias (dzfrias)

documentation

https://docs.rs/collect-all

README

collect-all

Build status Crates.io Docs Status

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!

Examples

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:

  1. with_capacity is a method of the target type (for example, see Vec::with_capacity)
  2. The target type implements Extend

License

This crate is licensed under the MIT license.

Commit count: 0

cargo fmt