gstr
GStr is an immutable string implementation optimized for small strings and comparison.
The size of GStr or Option<GStr> is guaranteed to be 16 bytes on 64-bit platforms or 12 bytes on 32-bit platforms.
The first 4 bytes of the string buffer are inlined in GStr, so comparing two GStrs is faster than comparing two strs in most cases.
The maximum length of GStr is i32::MAX.
Usage
use GStr;
// This clones the string into the heap memory.
let gstr = new;
assert_eq!;
// `GStr` can be constructed from a static string in const context without allocating memory.
let gstr = const ;
assert_eq!;
// `GStr` can be converted from `String` without allocating memory.
let gstr = from_string;
assert_eq!;
Features
gstr supports no_std, but needs the alloc crate to work.
gstr has the following features:
std: Enable support for some types instd. It's enable by default.serde: Enable serialization and deserialization support forserde.rkyv: Enable serialization and deserialization support forrkyv.
Warnings
gstr is not tested on big endian platforms, but it maybe works fine on them.