#[derive(Plural)]
for creating frictionless new types with a Vec
, HashMap
, etc.
From
, Into
, FromIterator
, IntoIterator
.Vec
and HashMap
(adding other collections to here is very easy).``rust
// This implements
From,
Into,
FromIterator,
IntoIterator,
Deref, and
DerefMut`.
struct Numbers(Vec
// use From
trait
let myfavoritenumbers: Numbers = vec![].into();
// FromIterator
allows this collect()
let doublednumbers: Numbers = myfavorite_numbers.0.iter().map(|x| x * 2).collect();
// HashMap
is also supported
struct FavoriteNumbers(HashMap<&'static str, Numbers>);
// construct the struct with using FromIterator
let favoritenumbers =
FavoriteNumbers::fromiter([("ryo33", myfavoritenumbers), ("someone", doubled_numbers)]);
// use it in a for
loop (IntoIterator
trait)
for (name, numbers) in favorite_numbers {
// use Deref trait
println!("{} has {} favorite number(s)", name, numbers.0.len());
}
```