Rust无政府主义风格可读名称生成库anarchist-readable-name-generator-lib的使用,轻松生成独特易记的随机标识符

Rust无政府主义风格可读名称生成库anarchist-readable-name-generator-lib的使用,轻松生成独特易记的随机标识符

这个库使用Anarchist Library中的作者名称来生成随机名称。

主要用途是为需要快速创建云计算资源但还没有想好名称的情况提供随机名称,通常用于临时用途。

示例

可以简单地生成一个随机名称:

use anarchist_readable_name_generator_lib::readable_name;

assert!(readable_name().len() > 0);

你也可以传入一个种子或更改分隔符来获得可预测性或进行轻微定制:

use anarchist_readable_name_generator_lib::readable_name_custom;
use rand::prelude::*;
use rand_chacha::ChaChaRng;

let rng = ChaChaRng::seed_from_u64(2);
assert_eq!(
    readable_name_custom("+", rng),
    "romantic+kamalmaz"
);

你还可以通过添加随机数后缀来稍微增加熵值:

use anarchist_readable_name_generator_lib::readable_name_custom_suffix;
use rand::prelude::*;
use rand_chacha::ChaChaRng;

let rng = ChaChaRng::seed_from_u64(2);
assert_eq!(
    readable_name_custom_suffix("+", rng),
    "dynamic+lepper3"
);

完整示例代码

use anarchist_readable_name_generator_lib::{readable_name, readable_name_custom, readable_name_custom_suffix};
use rand::prelude::*;
use rand_chacha::ChaChaRng;

fn main() {
    // 基本用法 - 生成随机名称
    println!("随机名称: {}", readable_name());
    
    // 自定义分隔符和种子
    let rng = ChaChaRng::seed_from_u64(42);
    println!("自定义名称: {}", readable_name_custom("-", rng));
    
    // 带数字后缀的自定义名称
    let rng = ChaChaRng::seed_from_u64(123);
    println!("带后缀的名称: {}", readable_name_custom_suffix("_", rng));
    
    // 生成10个随机名称
    println!("\n生成10个随机名称:");
    for _ in 0..10 {
        println!("- {}", readable_name());
    }
}

安装

在项目目录中运行以下Cargo命令:

cargo add anarchist-readable-name-generator-lib

或者在Cargo.toml中添加以下行:

anarchist-readable-name-generator-lib = "0.2.0"

许可证

CC0-1.0


1 回复

Rust无政府主义风格可读名称生成库使用指南

以下是基于您提供内容的完整示例demo:

基本使用示例

// 引入库
use anarchist_readable_name_generator_lib::{generate, generate_multiple};

fn main() {
    // 生成单个名称
    let name = generate();
    println!("单个名称: {}", name);  // 如: "radical-penguin"
    
    // 生成多个名称
    println!("\n多个名称:");
    let names = generate_multiple(3);
    for name in names {
        println!("- {}", name);  // 如: ["anarchist-llama", ...]
    }
}

高级使用示例

use anarchist_readable_name_generator_lib::{
    generate_with_separator, 
    Generator, 
    WordList
};

fn main() {
    // 自定义分隔符
    let underscored_name = generate_with_separator("_");
    println!("下划线分隔: {}", underscored_name);  // 如: "chaotic_unicorn"
    
    // 自定义词库
    let tech_adjectives = vec!["async", "borrowed", "compiled"];
    let tech_nouns = vec!["future", "lifetime", "macro"];
    
    let tech_wordlist = WordList::new(tech_adjectives, tech_nouns);
    let tech_generator = Generator::new(tech_wordlist);
    
    println!("技术主题名称: {}", tech_generator.generate());  // 如: "async-macro"
}

实际应用示例

use anarchist_readable_name_generator_lib::generate;
use std::{
    fs::File,
    path::PathBuf
};

fn main() -> std::io::Result<()> {
    // 生成临时文件
    let temp_file = PathBuf::from("/tmp")
        .join(format!("{}.log", generate()));
    File::create(&temp_file)?;
    println!("创建临时文件: {}", temp_file.display());
    
    // 生成用户名
    let username = generate()
        .replace("-", "")
        .to_lowercase();
    println!("生成用户名: {}", username);  // 如: "mutinousraccoon"
    
    Ok(())
}

特点说明

  1. 人类可读性:生成的名称如"rebellious-octopus"比随机字符串更易记忆
  2. 风格一致性:所有名称保持无政府主义/反叛主题风格
  3. 灵活定制:可自由组合形容词和名词库
  4. 零依赖:纯Rust实现,不增加项目依赖复杂度

使用建议

  1. 测试数据生成:为测试用例提供有意义的标识符
  2. 临时资源命名:避免使用无意义的随机字符串
  3. 开发环境配置:为不同环境生成特色名称
  4. 游戏开发:适合生成NPC或角色名称
回到顶部