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.2 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. Set to 0 to produce infinite names! [default: 1] -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, ":");

There's also 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.

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.