#string #ascii #any #widestring

无 std anystr

支持 ASCII、UTF-8、UTF-16 和 UTF-32 的字符串编码抽象

3 个不稳定版本

0.1.1 2024年4月23日
0.1.0 2024年4月23日
0.0.0 2024年4月23日

1193文本处理

MIT 许可证

34KB
608

这是一个用于抽象拥有或引用字符串编码的 crate,底层使用 widestringascii crates。

它适用于你可能想要序列化/反序列化字符串或将其移动到其他位置,但你并不关心其编码的情况。支持 std 和无 std 环境。

目前支持以下编码

  • ASCII
  • UTF-8
  • UTF-16
  • UTF-32

此 crate 提供了两种主要类型:AnyString,一个拥有字符串类型,以及 AnyStr,它是一个引用类型。

迭代示例

use anystr::AnyStr;
use widestring::utf16str;

let any = AnyStr::Utf16(utf16str!("Hello world, but utf-16!"));

fn print_any(str: AnyStr) {
    for ch in str.chars() {
        print!("{ch}");
    }
    println!();
}

print_any(any);

MSRV

此 crate 将始终针对最新的 Rust 版本,但它可能与旧版本兼容。

注意

尽管如此,这个项目主要是作为一个小的个人项目来制作的,目的是在某些情况下作为一个工具使用,并不打算替代更大的字符串处理 crates。

依赖项

~3–4.5MB
~81K SLoC