# [rust-haikunator](https://github.com/nishanths/rust-haikunator)
[](https://travis-ci.org/nishanths/rust-haikunator)
[](https://coveralls.io/github/nishanths/rust-haikunator?branch=master)
Generate Heroku-like random names to use in your Rust applications.
## Installation
Add to your `Config.toml` dependencies
```toml
[dependencies]
haikunator = "0.1.0"
```
## Usage
Include the crate; create a `Haikunator` instance; then call `haikunate`.
```rust
extern crate haikunator;
use haikunator::{Haikunator};
fn main() {
// normal usage
let haikunator = Haikunator::default();
println!("{}", haikunator.haikunate()); // => fancy-cloud-7181
// custom length (default=4)
let mut haikunator = Haikunator::default();
haikunator.token_length = 9;
println!("{}", haikunator.haikunate()); // => rapid-mode-572457286
// use hex instead of numbers
let mut haikunator = Haikunator::default();
haikunator.token_hex = true;
println!("{}", haikunator.haikunate()); // => "misty-boat-bd01"
// use custom chars instead of numbers/hex
// unicode works too
let mut haikunator = Haikunator::default();
haikunator.token_chars = "HAIKUNATE忠犬ハチ公";
println!("{}", haikunator.haikunate()); // => "divine-tiger-NKKチ"
// don't include a token
let mut haikunator = Haikunator::default();
haikunator.token_length = 0;
println!("{}", haikunator.haikunate()); // => "lingering-term"
// use a different delimiter
let mut haikunator = Haikunator::default();
haikunator.delimiter = ":";
println!("{}", haikunator.haikunate()); // => "young:cell:5426"
// no token, space delimiter
let mut haikunator = Haikunator::default();
haikunator.token_length = 0;
haikunator.delimiter = " ";
println!("{}", haikunator.haikunate()); // => "wandering coke"
// no token, empty delimiter
let mut haikunator = Haikunator::default();
haikunator.token_length = 0;
haikunator.delimiter = "";
println!("{}", haikunator.haikunate()); // => "freetooth"
// custom nouns and/or adjectives
let haikunator = Haikunator {
adjectives: &["dandy", "froody", "happy"],
nouns: &["whale", "towel", "earth"],
delimiter: "-",
token_length: 3,
token_hex: false,
token_chars: "24",
};
println!("{}", haikunator.haikunate()); // => "happy-earth-444"
}
```
See the test files at [`tests/lib.rs`](https://github.com/nishanths/rust-haikunator/blob/master/tests/lib.rs) for more examples.
## Options
The following options are available:
```rust
pub struct Haikunator<'a> {
pub adjectives: &'a [&'a str],
pub nouns: &'a [&'a str],
pub delimiter: &'a str,
pub token_length: usize,
pub token_hex: bool,
pub token_chars: &'a str,
}
```
**Note**: If `token_hex` is true, the value of `token_chars` is ignored.
## Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- [Report bugs](https://github.com/atrox/haikunatorgo/issues)
- Fix bugs and [submit pull requests](https://github.com/atrox/haikunatorgo/pulls)
- Write, clarify, or fix documentation
- Suggest or add new features
## Other Languages
Haikunator is also available in other languages. Check them out:
- Node: <https://github.com/Atrox/haikunatorjs>
- .NET: <https://github.com/Atrox/haikunator.net>
- Python: <https://github.com/Atrox/haikunatorpy>
- PHP: <https://github.com/Atrox/haikunatorphp>
- Java: <https://github.com/Atrox/haikunatorjava>
- Dart: <https://github.com/Atrox/haikunatordart>
- Ruby: <https://github.com/usmanbashir/haikunator>
## License
rust-haikunator is available under the [MIT License](https://github.com/nishanths/rust-haikunator/blob/master/LICENSE).