rust-petname

A petname library and command-line tool in Rust. Dustin Kirkland's petname project is the inspiration for this project. The word lists and command-line UX here are taken from there. Check it out! Dustin also maintains libraries for Python 2 & 3, and Golang.

Command-line utility

``` $ petname --help rust-petname 1.0.3 Gavin Panella gavinpanella@gmail.com Generate human readable random names.

USAGE: petname [OPTIONS]

FLAGS: -h, --help Prints help information -V, --version Prints version information

OPTIONS: -c, --complexity Use small words (0), medium words (1), or large words (2) [default: 0] --count Generate multiple names; pass 0 to produce infinite names! [default: 1] -l, --letters Maxiumum number of letters in each word; 0 for unlimited [default: 0] -s, --separator Separator between words [default: -] -w, --words Number of words in name [default: 2]

Based on Dustin Kirkland's petname project https://github.com/dustinkirkland/petname.

$ petname untaunting-paxton

$ petname -s _ -w 3 suitablyoverdelicatejamee ```

Library

There's a petname::Petnames struct:

rust pub struct Petnames<'a> { pub adjectives: Vec<&'a str>, pub adverbs: Vec<&'a str>, pub names: Vec<&'a str>, }

You can populate this with your own word lists, but there's a convenient default which uses the word lists from upstream petname. The other thing you need is a random number generator from rand:

rust let mut rng = rand::thread_rng(); let pname = petname::Petnames::default().generate(&mut rng, 7, ":");

Or, to use the default random number generator:

rust let pname = petname::Petnames::default().generate_one(7, ":");

There's a convenience function that'll do this for you:

rust let pname = petname::petname(7, ":")

It's probably best to use the generate method if you're building more than a handful of names.

You can modify the word lists to, for example, only use words beginning with the letter "b":

rust let mut petnames = petname::Petnames::default(); petnames.retain(|s| s.starts_with("b")); petnames.generate_one(3, ".");

Getting Started

To install the command-line tool:

Alternatively, to hack the source:

Running the tests

After installing the source (see above) run tests with: cargo test.

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for details.