#string #cow #text #str

no-std cow-utils

Rust 的 Copy-on-write 字符串实用工具

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文本处理 中排名

Download history 5539/week @ 2024-03-14 5331/week @ 2024-03-21 4830/week @ 2024-03-28 4470/week @ 2024-04-04 4687/week @ 2024-04-11 4333/week @ 2024-04-18 4011/week @ 2024-04-25 4636/week @ 2024-05-02 4112/week @ 2024-05-09 4857/week @ 2024-05-16 4599/week @ 2024-05-23 4821/week @ 2024-05-30 5219/week @ 2024-06-06 4629/week @ 2024-06-13 5103/week @ 2024-06-20 4423/week @ 2024-06-27

每月下载 20,057
63 个 Crates 中使用 (13 个直接使用)

MIT 许可证

16KB
115

为 Rust 提供的 Copy-on-write 字符串实用工具

Crate docs License

一些 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_ 前缀开头的方法,而不是常规方法

查看文档以获取详细示例。

无运行时依赖