8个版本 (3个稳定版)
1.1.0-alpha.2 | 2024年7月27日 |
---|---|
1.1.0-alpha.1 | 2024年5月7日 |
1.0.1 | 2023年10月16日 |
1.0.0-alpha.3 | 2023年9月28日 |
#209 in 文本处理
150 每月下载量
120KB
2K SLoC
mut-str
一个用于处理可变字符串切片(&mut str
)和不可变字符串切片的工具包!
几乎在标准库中你可以安全地对可变字符串切片进行的所有操作都可以通过这个包进行,比如将它们转换为小写或大写。这个包允许通过字符索引(而不是字节索引)进行分割和切片,替换字符串和使用字符引用。
字符串切片的所有函数都可以在包根处或作为StrExt
特质的实例方法使用。
cargo add mut-str
示例
use mut_str::StrExt;
let mut welcome = Box::<str>::from("Hello, World!");
// Split by character index
let (l, r) = welcome.char_split_at_mut(7).unwrap();
assert_eq!(l, "Hello, ");
assert_eq!(r, "World!");
// Replace string slices
l.replace_with("mut-str").unwrap();
assert_eq!(l, "mut-str");
// Replace with padding
let sub = r.replace_with_pad_left_char("👑!", ' ').unwrap();
assert_eq!(sub, "👑!");
assert_eq!(r, " 👑!");
assert_eq!(&*welcome, "mut-str 👑!");
// Get character references
let crown = welcome.get_char_mut(8).unwrap();
assert_eq!(crown, '👑');
// Mutate characters
crown.replace('🌍').unwrap();
assert_eq!(crown, '🌍');
// Slice by character index
let l = welcome.char_slice_mut(..7).unwrap();
l.replace_with_pad_left_space("👋").unwrap();
assert_eq!(&*welcome, " 👋 🌍!");
链接
mut-str
在crates.io上
mut-str
在GitHub上
功能
alloc
(默认启用)添加了需要alloc
库的实现。std
(默认启用,需要alloc
)添加了针对标准库的特定实现。nightly
(需要rust nightly)见下文。
为了使此包与no-std
兼容,请禁用std
功能。
cargo add mut-str --no-default-features
cargo add mut-str --no-default-features --features=alloc
夜间版本变更
- 使用
extern_types
功能来修复指针来源问题。 - 为未启用
std
的错误实现Error
。
许可证
mut-str
可根据您的选择,在Apache License Version 2.0或MIT许可证下进行双重许可。