thisisplural

GitHub MIT/Apache 2.0 Crates.io docs.rs

#[derive(Plural)] for creating frictionless new types with a Vec, HashMap, etc.

Features

Example

``rust // This implementsFrom,Into,FromIterator,IntoIterator,Deref, andDerefMut`.

[derive(Plural)]

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

[derive(Plural)]

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()); } ```