# Collection Literals
Simple library for convenient collection initialization.
## `collection!` macro
Macro for initializing collections of any type.
```rust
use collection_literals::collection;
fn main() {
let empty_collection: HashMap = collection! {};
let empty_collection = collection! { HashMap:: };
let hash_set: HashSet = collection! { 1, 5, 9, 12 };
let hash_set = collection! { HashSet::; 1, 5, 9, 12 };
let hash_map: HashMap = collection! {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
};
let hash_map = collection! { HashMap::;
0 => '0',
1 => '1',
2 => '2',
3 => '3',
};
let btree_set: BTreeSet = collection! { 1, 5, 9, 12 };
let btree_set = collection! { BTreeSet::; 1, 5, 9, 12 };
let btree_map: BTreeMap = collection! {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
};
let btree_map = collection! { BTreeMap::;
0 => '0',
1 => '1',
2 => '2',
3 => '3',
};
}
```
## `hash!` macro
Macro for initializing both HashMaps and HashSets. It can infer both type of collection and types of entries, but you
can provide explicit type annotations.
```rust
use collection_literals::hash;
fn main() {
let empty_hash_map: HashMap = hash! {};
let empty_hash_map = hash! { map of String => bool };
let empty_hash_map = hash! { map of String => bool {} };
let empty_hash_map = hash! { of String => bool };
let empty_hash_map = hash! { of String => bool {} };
let empty_hash_set: HashSet = hash! {};
let empty_hash_set = hash! { set of u8 };
let empty_hash_set = hash! { set of u8 {} };
let empty_hash_set = hash! { of u8 };
let empty_hash_set = hash! { of u8 {} };
let hash_map: HashMap = hash! {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
};
let hash_map = hash! { map of u64 => char {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
}};
let hash_map = hash! { of u64 => char {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
}};
let hash_map = hash! {
0_u64 => '0',
1_u64 => '1',
2_u64 => '2',
3_u64 => '3',
};
let hash_set: HashSet = hash! { 1, 2, 3 };
let hash_set = hash! { set of u8 { 1, 2, 3 } };
let hash_set = hash! { of u8 { 1, 2, 3 } };
let hash_set = hash! { 1_u8, 2_u8, 3_u8 };
}
```
## `btree!` macro:
Macro for initializing both BTreeMaps and BTreeSets. It can infer both type of collection and types of entries, but you
can provide explicit type annotations.
```rust
use collection_literals::btree;
fn main() {
let empty_btree_map: BTreeMap = btree! {};
let empty_btree_map = btree! { map of String => bool };
let empty_btree_map = btree! { map of String => bool {} };
let empty_btree_map = btree! { of String => bool };
let empty_btree_map = btree! { of String => bool {} };
let empty_btree_set: BTreeSet = hash! {};
let empty_btree_set = btree! { set of u8 };
let empty_btree_set = btree! { set of u8 {} };
let empty_btree_set = btree! { of u8 };
let empty_btree_set = btree! { of u8 {} };
let btree_map: BTreeMap = btree! {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
};
let btree_map = btree! { map of u64 => char {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
}};
let btree_map = btree! { of u64 => char {
0 => '0',
1 => '1',
2 => '2',
3 => '3',
}};
let btree_map = btree! {
0_u64 => '0',
1_u64 => '1',
2_u64 => '2',
3_u64 => '3',
};
let btree_set: BTreeSet = btree! { 1, 2, 3 };
let btree_set = btree! { set of u8 { 1, 2, 3 } };
let btree_set = btree! { of u8 { 1, 2, 3 } };
let btree_set = btree! { 1_u8, 2_u8, 3_u8 };
}
```