Expand description
Key String: Optimized for map keys.
Background
Considerations:
- Large maps
- Most keys live and drop without being used in any other way
- Most keys are relatively small (single to double digit bytes)
- Keys are immutable
- Allow zero-cost abstractions between structs and maps (e.g. no allocating when dealing with struct field names)
Ramifications:
- Inline small strings rather than going to the heap.
- Preserve
&'static stracross strings (KString), references (KStringRef), and lifetime abstractions (KStringCow) to avoid allocating for struct field names. - Use
Box<str>rather thanStringto use less memory.
Feature Flags
-
arc— O(1) clone support -
max_inline— Inline (stack) strings use the full width ofKStrings -
unsafe(enabled by default) — Allow unsafe code -
serde(enabled by default) —serdecompatibility
Structs
A UTF-8 encoded, immutable string.
A reference to a UTF-8 encoded, immutable string.
A reference to a UTF-8 encoded, immutable string.
Fixed-size stack-allocated string