A String
with shared ownership.
Helpfull for some types that need to be parsed from a string
and get split into smaller parts like an Url
or a Vec
containing lines
which need to be owned by the parent type.
First try to store references, for example &str
which is more efficient.
At the moment if you create a SharedString
the underlying bytes cannot be
mutated anymore.
``rust
use shared_string::SharedString;
// or SharedSyncString if
Sync` is required
struct Name { firstname: SharedString, middlename: SharedString, lastname: SharedString // to be faster than string // you should use at least 3 fields }
impl Name {
pub fn new(fullname: impl Into
let name = Name::new("Bartholomew Jojo Simpson").unwrap(); asserteq!(name.firstname, "Bartholomew"); asserteq!(name.middlename, "Jojo"); assert_eq!(name.lastname, "Simpson"); ```
SharedString
can increase the perfomance in situations such as the example
above by over 30%. See benches/*
for benchmarks.