#str #escaping #lazy-evaluation #replace #string

lazy-transform-str

懒拷贝懒分配扫描 str 转换。例如,用于(反)转义文本,特别是如果单个字符串较短时。

6 个版本

0.0.6 2020 年 9 月 22 日
0.0.5 2020 年 9 月 11 日
0.0.1 2020 年 8 月 26 日

#2478算法


5 个 crate 中使用(通过 taml

MIT/Apache

14KB
79

lazy-transform-str

Lib.rs Crates.io Docs.rs

Rust 1.42.0 Build Status Crates.io - License

GitHub open issues open pull requests crev reviews

懒拷贝懒分配扫描 str 转换。

例如,用于(反)转义文本,特别是如果单个字符串较短时。

安装

请使用 cargo-edit 以始终添加此库的最新版本

cargo add lazy-transform-str

示例

use {
    cervine::Cow,
    gnaw::Unshift as _,
    lazy_transform_str::{Transform as _, TransformedPart},
    smartstring::alias::String,
};

fn double_a(str: &str) -> Cow<String, str> {
    str.transform(|rest /*: &mut &str */| {
        // Consume some of the input. `rest` is never empty here.
        match rest.unshift().unwrap() {
            'a' => TransformedPart::Changed(String::from("aa")),
            _ => TransformedPart::Unchanged,
        }
    } /*: impl FnMut(…) -> … */ )
}

assert_eq!(double_a("abc"), Cow::Owned(String::from("aabc")));
assert_eq!(double_a("bcd"), Cow::Borrowed("bcd"));

许可证

在以下许可证中选择一项:

由您选择。

贡献

除非您明确声明,否则任何旨在包含在作品中的有意贡献,如 Apache-2.0 许可证中定义的,均应按上述方式双重许可,而不附加任何额外条款或条件。

行为准则

变更日志

版本控制

lazy-transform-str 严格遵循 语义版本控制 2.0.0,但有以下例外

  • 次要版本在主版本更改时不会重置为 0(除 v1 以外)。
    视为全局功能级别。
  • 修补版本在主版本或次要版本更改时不会重置为 0(除 v0.1 和 v1 以外)。
    视为全局修补级别。

这包括上述指定的 Rust 版本要求。
早期 Rust 版本可能兼容,但可能会随着次要或修补版本而更改。

受功能和修补版本影响的版本可以从 CHANGELOG.md 中的相应标题确定。

依赖项

~160KB