name-engine 0.1.0

A Rust library for computing Markov chains to generate random names based on pronunciation
Documentation
use name_engine::{Name, NameGeneratorBuilder};
use rand::{rngs::StdRng, Rng, SeedableRng};

fn main() {
    let place_names = vec![
        // 青森
        vec![("", "ao"), ("", "mori")],
        // 盛岡
        vec![("", "mori"), ("", "oka")],
        // 酒田
        vec![("", "saka"), ("", "ta")],
        // 米沢
        vec![("", "yone"), ("", "zawa")],
        // 秋田
        vec![("", "aki"), ("", "ta")],
        // 山形
        vec![("", "yama"), ("", "gata")],
        // 福島
        vec![("", "fuku"), ("", "shima")],
        // 仙台
        vec![("", "sen"), ("", "dai")],
        // 長岡
        vec![("", "naga"), ("", "oka")],
        // 上越
        vec![("", "jo"), ("", "etsu")],
        // 佐渡
        vec![("", "sa"), ("", "do")],
        // 高崎
        vec![("", "taka"), ("", "saki")],
        // 伊勢崎
        vec![("", "i"), ("", "se"), ("", "saki")],
        // 日立
        vec![("", "hi"), ("", "tachi")],
        // 水戸
        vec![("", "mi"), ("", "to")],
        // 成田
        vec![("", "nari"), ("", "ta")],
        // 船橋
        vec![("", "funa"), ("", "bashi")],
        // 佐倉
        vec![("", "sa"), ("", "kura")],
        // 市原
        vec![("", "ichi"), ("", "hara")],
        // 立川
        vec![("", "tachi"), ("", "kawa")],
        // 八王子
        vec![("", "hachi"), ("", "o"), ("", "ji")],
        // 所沢
        vec![("", "tokoro"), ("", "zawa")],
        // 飯田
        vec![("", "ii"), ("", "da")],
        // 上田
        vec![("", "jo"), ("", "da")],
        // 小諸
        vec![("", "ko"), ("", "moro")],
        // 長野
        vec![("", "naga"), ("", "no")],
        // 松本
        vec![("", "matsu"), ("", "moto")],
        // 豊橋
        vec![("", "toyo"), ("", "hashi")],
        // 名古屋
        vec![("", "na"), ("", "go"), ("", "ya")],
        // 岡崎
        vec![("", "oka"), ("", "zaki")],
        // 豊田
        vec![("", "toyo"), ("", "ta")],
        // 高山
        vec![("", "taka"), ("", "yama")],
        // 金沢
        vec![("", "kana"), ("", "zawa")],
        // 富山
        vec![("", "to"), ("", "yama")],
        // 福井
        vec![("", "fuku"), ("", "i")],
        // 甲府
        vec![("", "ko"), ("", "fu")],
        // 静岡
        vec![("", "shizu"), ("", "oka")],
        // 浜松
        vec![("", "hama"), ("", "matsu")],
        // 長浜
        vec![("", "naga"), ("", "hama")],
        // 小浜
        vec![("", "o"), ("", "bama")],
        // 大津
        vec![("", "o"), ("", "tsu")],
        // 亀岡
        vec![("", "kame"), ("", "oka")],
        // 豊岡
        vec![("", "toyo"), ("", "oka")],
        // 神戸
        vec![("", "ko"), ("", "be")],
        // 姫路
        vec![("", "hime"), ("", "ji")],
        // 洲本
        vec![("", "su"), ("", "moto")],
        // 三田
        vec![("", "san"), ("", "da")],
        // 松原
        vec![("", "matsu"), ("", "bara")],
        // 岸和田
        vec![("", "kishi"), ("", "wa"), ("", "ta")],
        // 有田
        vec![("", "ari"), ("", "ta")],
        // 徳島
        vec![("", "toku"), ("", "shima")],
        // 高松
        vec![("", "taka"), ("", "matsu")],
        // 松山
        vec![("", "matsu"), ("", "yama")],
        // 南国
        vec![("", "nan"), ("", "koku")],
        // 岡山
        vec![("", "oka"), ("", "yama")],
        // 広島
        vec![("", "hiro"), ("", "shima")],
        // 福山
        vec![("", "fuku"), ("", "yama")],
        // 赤磐
        vec![("", "aka"), ("", "iwa")],
        // 津山
        vec![("", "tsu"), ("", "yama")],
        // 岩国
        vec![("", "iwa"), ("", "kuni")],
        // 山口
        vec![("", "yama"), ("", "guchi")],
        // 宇部
        vec![("", "u"), ("", "be")],
        // 浜田
        vec![("", "hama"), ("", "da")],
        // 大田
        vec![("", "o"), ("", "ta")],
        // 松江
        vec![("", "matsu"), ("", "e")],
        // 倉吉
        vec![("", "kura"), ("", "yoshi")],
        // 佐世保
        vec![("", "sa"), ("", "se"), ("", "bo")],
        // 福岡
        vec![("", "fuku"), ("", "oka")],
        // 大村
        vec![("", "o"), ("", "mura")],
        // 島原
        vec![("", "shima"), ("", "bara")],
        // 中津
        vec![("", "naka"), ("", "tsu")],
        // 久留米
        vec![("", "ku"), ("", "ru"), ("", "me")],
        // 大牟田
        vec![("", "o"), ("", "mu"), ("", "ta")],
        // 玉名
        vec![("", "tama"), ("", "na")],
        // 人吉
        vec![("", "hito"), ("", "yoshi")],
        // 霧島
        vec![("", "kiri"), ("", "shima")],
        // 日置
        vec![("", "hi"), ("", "oki")],
        // 鹿児島
        vec![("鹿", "ka"), ("", "go"), ("", "shima")],
        // 宮崎
        vec![("", "miya"), ("", "zaki")],
    ]
    .iter()
    .map(|name| Name::new(name.to_vec()).unwrap())
    .collect::<Vec<Name>>();

    let generator = NameGeneratorBuilder::new()
        .bulk_add_names(place_names)
        .build();
    let mut rng: StdRng = SeedableRng::seed_from_u64(0);
    (0..100).for_each(|_| {
        let name = generator.generate(|| rng.gen());
        println!("{} {}", name.0, name.1);
    });
}