1 unstable release
0.1.0 | Oct 15, 2021 |
---|
#2361 in Data structures
15KB
241 lines
quetta
(from the Quenya word for "word") is a library providing simple
immutable strings in Rust.
Essentially, it is a wrapper around Arc<str>
, but with support for slicing and compatibility features
with &str
.
The primary type provided is quetta::Text
, which is either a owned string (immutable and refcounted atomically) or a slice into one.
Motivation
Strings in Rust are relatively cumbersome to use (compared to high-level languages like Java, C#, OCaml etc.). For dealing with strings, there are two common choices:
-
Use an owned
String
- Easy to pass around
- Requires cloning frequently, which can be inefficient
- Is mutable
- Substrings/slices create either a borrowed
&str
or cause copying
-
Use a string slice
&str
- Requires frequent lifetime annotations
- Requires keeping the owning
String
around - Can be easily sliced
quetta::Text
aims to make dealing with this easier, especially for applications like GUI apps and compilers that often have to deal and pass around text.
Usage
Add this to your Cargo.toml
:
[dependencies]
quetta = "0.1.0"
Example
use quetta::Text;
let t: Text = Text::new("a.b.c");
let s1: Text = t.slice(0, 2);
assert_eq!("a.", s1.as_str());
For more examples, see the documentation or take a look at the code.