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
181,073 downloads per month
Used in 271 crates
(84 directly)
21KB
569 lines
smol_str
A SmolStr
is a string type that has the following properties:
size_of::<SmolStr>() == size_of::<String>()
Clone
isO(1)
- Strings are stack-allocated if they are:
- Up to 23 bytes long
- Longer than 23 bytes, but substrings of
WS
(seesrc/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