24 releases

0.1.24 Feb 5, 2023
0.1.23 Apr 26, 2022
0.1.21 Nov 4, 2021
0.1.18 Jun 26, 2021
0.1.7 Oct 13, 2018

#44 in Rust patterns

Download history 29826/week @ 2022-12-02 27559/week @ 2022-12-09 25144/week @ 2022-12-16 20260/week @ 2022-12-23 26956/week @ 2022-12-30 33386/week @ 2023-01-06 34245/week @ 2023-01-13 36234/week @ 2023-01-20 37126/week @ 2023-01-27 38261/week @ 2023-02-03 40555/week @ 2023-02-10 40065/week @ 2023-02-17 45192/week @ 2023-02-24 41874/week @ 2023-03-03 46032/week @ 2023-03-10 41421/week @ 2023-03-17

181,073 downloads per month
Used in 271 crates (84 directly)

MIT/Apache

21KB
569 lines

smol_str

CI 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 23 bytes long
    • Longer than 23 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.

MSRV Policy

Minimal Supported Rust Version: latest stable.

Bumping MSRV is not considered a semver-breaking change.

Dependencies

~84KB