bstr是 Rust 的字节字符串库,它的 1.0 版本刚刚发布!它在任意字节序列上提供面向字符串的操作,但当这些字节是 UTF-8 时最有用。换句话说,它提供了一个按照约定是 UTF-8 的字符串类型,而 Rust 的内置字符串类型保证是 UTF-8。
bstr本博客将简要描述 API,深入探讨创建bstr.
目标受众:具有一定 UTF-8 背景知识的 Rust 程序员。
bstr crate主要通过定义两个扩展特性,ByteSlice和ByteVec,为标准库的&[u8]和Vec<u8>类型增加面向字符串的方法。
演示子字符串搜索的示例。needle 和 haystack 都可以是任意字节,就像经典的 Cmemmem 例程一样:
use bstr::ByteSlice; |
这利用了ByteSlice::find_iter方法。与标准库不同,bstr它没有定义多态子字符串搜索 API,而是使事情更加具体。例如,要搜索 一个char,您可以使用ByteSlice::find_char方法。
这是另一个演示 Unicode 感知大写的示例,但在不是有效 UTF-8 的文本上。
use bstr::{B, ByteSlice}; |
上面的例子表明,无效的 UTF-8 实际上并不能阻止人们对字符串中有效的 UTF-8 部分应用 Unicode 感知算法。UTF-8 无效的部分将被忽略。