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
查看文档以获取详细示例。