thisisplural_derive

Crates.iothisisplural_derive
lib.rsthisisplural_derive
version0.1.0
sourcesrc
created_at2021-09-11 18:15:53.65769
updated_at2021-09-11 18:15:53.65769
description#[derive(Plural)] for creating frictionless new types with a Vec, HashMap, etc.
homepagehttps://github.com/ryo33/thisisplural
repositoryhttps://github.com/ryo33/thisisplural
max_upload_size
id449815
size6,650
Ryo Hirayama (ryo33)

documentation

README

thisisplural

GitHub MIT/Apache 2.0 Crates.io docs.rs

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

Features

  • #[derive(Plural)] implements From, Into, FromIterator, IntoIterator, Deref, and DerefMut.
  • Supports Vec and HashMap (adding other collections to here is very easy).

Example

#[derive(Plural)]
struct Numbers(Vec<u32>);

// use From trait
let mut my_favorite_numbers: Numbers = vec![].into();

// use DerefMut trait.
my_favorite_numbers.push(42);

// HashMap is also supported
#[derive(Plural)]
struct FavoriteNumbers(HashMap<&'static str, Numbers>);

// use FromIterator trait
let favorite_numbers = FavoriteNumbers::from_iter([("ryo33", my_favorite_numbers)]);

// use IntoIterator trait
for (name, numbers) in favorite_numbers {
		// use Deref trait
		println!("{} has {} favorite number(s)", name, numbers.len());
}
Commit count: 14

cargo fmt