kstring

Crates.iokstring
lib.rskstring
version2.0.2
sourcesrc
created_at2020-03-16 20:53:39.275724
updated_at2024-07-25 13:52:17.503818
descriptionKey String: optimized for map keys
homepage
repositoryhttps://github.com/cobalt-org/kstring
max_upload_size
id219582
size111,487
Ed Page (epage)

documentation

https://docs.rs/kstring

README

KString

Key String: Optimized for map keys.

Crates Status

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 str across strings (KString), references (KStringRef), and lifetime abstractions (KStringCow) to avoid allocating for struct field names.
  • Use Box<str> rather than String to use less memory.

Features

  • max_inline: Instead of aligning the inline-string for performance (15 bytes + length on 64-bit), use the full width (22 bytes on 64-bit)
  • arc: Instead of using Box<str>, use Arc<str>. Note: allocations are fast enough that this can actually slow things down for small enough strings.

Alternatives, see string-benchmarks-rs

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 1304

cargo fmt