pinyin2ch

Crates.iopinyin2ch
lib.rspinyin2ch
version0.1.1
created_at2025-10-19 11:59:09.053466+00
updated_at2025-10-19 12:13:23.456846+00
descriptionA Rust library for converting Chinese Pinyin to Chinese characters with various levels of detail.
homepage
repositoryhttps://github.com/harkerhand/pinyin2ch
max_upload_size
id1890353
size115,682
Harker Hand (harkerhand)

documentation

README

pinyin2ch

这是一个将拼音(不带声调)映射到汉字的轻量 Rust 库,提供拼音合法性检查与拼音->汉字的查找。README 使用中文写成,包含功能说明、使用示例以及可选的字表分级特性说明(level1/level2/level3)。

主要功能

  • 提供 Pinyin 类型,包含标准拼音音节列表与合法性检查(不带声调)。
  • 提供 ChChar(汉字)类型,包含拼音与对应汉字字符串;支持从汉字推断拼音(依赖外部 pinyin crate)。
  • 提供拼音到汉字的映射表(多等级字表):get_map_level1 / get_map_level2 / get_map_level3,以及汇总函数 get_map(根据 Cargo features 合并对应级别字表)。
  • 简单的单元测试示例在 src/tests.rs 中。

适用场景

  • 需要根据没有声调的拼音查找候选汉字的场景(输入法、拼音校验、拼音分词或笔记工具中的拼音提示等)。

快速开始

在你的 Cargo.toml 中加入 pinyin2ch

[dependencies]
pinyin2ch = "0.1"

示例代码:

use pinyin2ch::Pinyin;
use pinyin2ch::get_chars;

fn main() {
    // 创建拼音(会检查合法性)
    let p = Pinyin::new("ma").expect("ma 是合法拼音");
    let chars = get_chars(&p);
    // 输出候选汉字
    for c in chars.iter() {
        println!("{} -> {}", p.as_str(), c.as_ref());
    }
}

如果你想直接从汉字创建 ChChar 并自动推断拼音(依赖 pinyin crate):

let ch = pinyin2ch::ch_char::ChChar::from("妈");
println!("{} -> {}", ch.pinyin.as_str(), ch.as_ref());

字表分级(features)

库源代码包含 3 个可选字表:level1level2level3

  • level1:常用字表(默认推荐用于大多数场景)

  • level2:扩展生僻字表

  • level3:更偏生僻或古字

启用多级字表会在运行时 get_map() 合并对应级别的映射(后添加的 feature 会覆盖同一拼音键的条目)。

测试

项目内已有单元测试,运行:

# 在仓库根目录运行
cargo test

注意:测试和某些功能依赖 pinyin 第三方 crate,用于从汉字推断拼音;请确保网络可用以获取依赖,或在离线环境中提前缓存依赖。

贡献与许可

欢迎提交 issue 或 PR。代码采用 MIT 许可证,详见 LICENSE 文件。

额外说明

  • 本仓库的 src/map.rs 包含了大量静态映射数据(按级别分组),如果需要更高效的查找或序列化,可考虑将映射在构建时生成或使用按需加载机制。
Commit count: 0

cargo fmt