rdeck 0.2.0

a simple library for choosing distinct random elements
Documentation
use rdeck::{Deck, ToDeck, Rng};
use rand_core::OsRng;

fn make_playing_deck(values: &[&str], suits: &[&str]) -> Vec<String> {
	let mut r = Vec::with_capacity(values.len() * suits.len());
	for v in values {
		for s in suits {
			r.push(format!("{} of {}", v, s));
		}
	}
	return r;
}

const SUITS: &[&str] = &["diamonds", "clubs", "hearts", "spades"];
const VALUES: &[&str] = &[
	"ace", "two", "three", "four", "five", "six", "seven", "eight", "nine",
	"ten", "jack", "queen", "king"];

fn main() {
	let count: usize = std::env::args().nth(1)
		.expect("expected argument: number of cards to draw")
		.parse().expect("cannot draw non-integer number of cards");
	let cards = make_playing_deck(VALUES, SUITS);
	let mut deck = cards.as_slice().to_deck(OsRng);
	for _ in 0..count {
		if let Some(card) = deck.try_draw() {
			println!("{}", card);
		} else {
			eprintln!("deck is out of cards!");
			std::process::exit(2);
		}
	}
}