[−][src]Crate shared_string
Split a string without another allocation
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.
Note
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.
Example
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<SharedString>) -> Option<Self> { let mut split = fullname.into().split(b' '); Some(Self { firstname: split.next()?, middlename: split.next()?, lastname: split.next()? }) } } let name = Name::new("Bartholomew Jojo Simpson").unwrap(); assert_eq!(name.firstname, "Bartholomew"); assert_eq!(name.middlename, "Jojo"); assert_eq!(name.lastname, "Simpson");
Performance
SharedString can increase the perfomance in situations such as the example
above by over 30%. See benches/* for benchmarks.
Modules
| iter | Iterator types |
Structs
| SharedGenString | A |
Traits
| RefCounter | A trait to allow |
Type Definitions
| SharedString | Use |
| SharedSyncString | Use |