1 个不稳定版本
0.1.0 | 2021年10月15日 |
---|
#2361 在 数据结构
15KB
241 行
quetta
(来自昆雅语中的“单词”)是一个提供简单不可变字符串的Rust库。本质上,它是对 Arc<str>
的封装,但支持切片和与 &str
的兼容性功能。
提供的主要类型是 quetta::Text
,它是一个拥有字符串(不可变和原子引用计数的原子)或是对一个的切片。
动机
Rust中的字符串相对难以使用(与Java、C#、OCaml等高级语言相比)。对于处理字符串,有两个常见的选择
-
使用拥有的
String
- 易于传递
- 需要频繁克隆,可能效率不高
- 是可变的
- 子字符串/切片会创建一个借用
&str
或导致复制
-
使用字符串切片
&str
- 需要频繁的生存期注解
- 需要保留拥有
String
的字符串 - 可以很容易地进行切片
quetta::Text
旨在使处理字符串更加容易,特别是对于需要处理和传递文本的应用程序,如GUI应用程序和编译器。
用法
将此添加到您的 Cargo.toml
[dependencies]
quetta = "0.1.0"
示例
use quetta::Text;
let t: Text = Text::new("a.b.c");
let s1: Text = t.slice(0, 2);
assert_eq!("a.", s1.as_str());