#str #string #strings #type #clone #ws

smol_str

small-string optimized string type with O(1) clone

13 releases

0.1.12 Jul 7, 2019
0.1.11 May 21, 2019
0.1.10 Mar 31, 2019
0.1.9 Jan 11, 2019
0.1.4 Aug 31, 2018
Download history 124/week @ 2019-03-24 246/week @ 2019-03-31 126/week @ 2019-04-07 169/week @ 2019-04-14 160/week @ 2019-04-21 326/week @ 2019-04-28 356/week @ 2019-05-05 441/week @ 2019-05-12 911/week @ 2019-05-19 752/week @ 2019-05-26 996/week @ 2019-06-02 371/week @ 2019-06-09 713/week @ 2019-06-16 805/week @ 2019-06-23 721/week @ 2019-06-30

2,274 downloads per month
Used in 6 crates (3 directly)

MIT/Apache

13KB
306 lines

smol_str

Build Status Crates.io API reference

A SmolStr is a string type that has the following properties:

  • size_of::<SmolStr>() == size_of::<String>()
  • Clone is O(1)
  • Strings are stack-allocated if they are:
    • Up to 22 bytes long
    • Longer than 22 bytes, but substrings of WS (see src/lib.rs). Such strings consist solely of consecutive newlines, followed by consecutive spaces
  • If a string does not satisfy the aforementioned conditions, it is heap-allocated

Unlike String, however, SmolStr is immutable. The primary use case for SmolStr is a good enough default storage for tokens of typical programming languages. Strings consisting of a series of newlines, followed by a series of whitespace are a typical pattern in computer programs because of indentation. Note that a specialized interner might be a better solution for some use cases.

Dependencies