[][src]Struct petname::Petnames

pub struct Petnames<'a> {
    pub adjectives: Words<'a>,
    pub adverbs: Words<'a>,
    pub names: Words<'a>,
}

Word lists and the logic to combine them into petnames.

A petname with n words will contain, in order:

  • n - 2 adverbs when n >= 2, otherwise 0 adverbs.
  • 1 adjective when n >= 2, otherwise 0 adjectives.
  • 1 name / noun when n >= 1, otherwise 0 names.

Fields

adjectives: Words<'a>adverbs: Words<'a>names: Words<'a>

Methods

impl<'a> Petnames<'a>[src]

pub fn default() -> Self[src]

Constructs a new Petnames from the default (small) word lists.

pub fn small() -> Self[src]

Constructs a new Petnames from the small word lists.

pub fn medium() -> Self[src]

Constructs a new Petnames from the medium word lists.

pub fn large() -> Self[src]

Constructs a new Petnames from the large word lists.

pub fn init(adjectives: &'a str, adverbs: &'a str, names: &'a str) -> Self[src]

Constructs a new Petnames from the given word lists.

The words are extracted from the given strings by splitting on whitespace.

pub fn retain<F>(&mut self, predicate: F) where
    F: Fn(&&str) -> bool
[src]

Keep words matching a predicate.

Examples

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

This is merely a convenience wrapper that applies the same predicate to the adjectives, adverbs, and names lists.

pub fn cardinality(&self, words: u8) -> u128[src]

Calculate the cardinality of this Petnames.

If this is low, names may be repeated by the generator with a higher frequency than your use-case may allow. If it is 0 (zero) the generator will panic (unless words is also zero).

This can saturate. If the total possible combinations of words exceeds u128::MAX then this will return u128::MAX.

pub fn generate<RNG>(&self, rng: &mut RNG, words: u8, separator: &str) -> String where
    RNG: Rng
[src]

Generate a new petname.

Examples

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

Notes

This may return fewer words than you request if one or more of the word lists are empty. For example, if there are no adverbs, requesting 3 or more words may still yield only "doubtful-salmon".

pub fn generate_one(&self, words: u8, separator: &str) -> String[src]

Generate a single new petname.

This is like generate but uses rand::thread_rng as the random source. For efficiency use generate when creating multiple names, or when you want to use a custom source of randomness.

Trait Implementations

impl<'a> Default for Petnames<'a>[src]

Auto Trait Implementations

impl<'a> RefUnwindSafe for Petnames<'a>

impl<'a> Send for Petnames<'a>

impl<'a> Sync for Petnames<'a>

impl<'a> Unpin for Petnames<'a>

impl<'a> UnwindSafe for Petnames<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,