4 个版本
0.1.3 | 2023年9月26日 |
---|---|
0.1.2 | 2020年2月17日 |
0.1.1 | 2020年2月16日 |
0.1.0 | 2020年2月16日 |
107 在 文本处理 中排名
每月下载 20,057 次
在 63 个 Crates 中使用 (13 个直接使用)
16KB
115 行
为 Rust 提供的 Copy-on-write 字符串实用工具
一些 str
方法执行破坏性转换,因此即使在不需要修改的情况下也会分配,复制到并返回一个新的 String
。
此 crate 提供了一个辅助 trait CowUtils
,它具有此类方法的直接变体,它们的行为方式相同,但在不需要修改时避免额外的复制和分配。
目前它仅针对 &str
实现,并返回 std::borrow::Cow<str>
,但将来可能会扩展到其他类型,在这些类型中可以实现更有效的处理(例如,在可变字符串上就地修改)。
性能
此 crate 的主要动机是能够执行零分配替换,因此现在仅显示 .replace
与 .cow_replace
的结果。
实际结果将根据输入而变化,但以下是基于 "a".repeat(40)
作为输入和不同模式(无匹配项、全部匹配并替换、全部匹配并从起始处删除)的示例。
参数 | .replace (ns) | .cow_replace (ns) | 差异 (%) |
---|---|---|---|
("a", "") | 408.59 | 290.27 | -29 |
("b", "c") | 98.78 | 54.00 | -45 |
("a", "b") | 985.99 | 1,000.70 | +1 |
用法
首先,您需要将 CowUtils
导入作用域
use cow_utils::CowUtils;
然后您可以在字符串上调用以下以 .cow_
前缀开头的方法,而不是常规方法
.cow_replace
替代str::replace
.cow_replacen
替代str::replacen
.cow_to_ascii_lowercase
替代str::to_ascii_lowercase
.cow_to_ascii_uppercase
替代str::to_ascii_uppercase
.cow_to_lowercase
替代str::to_lowercase
.cow_to_uppercase
替代str::to_uppercase
查看文档以获取详细示例。