smol_strc

Crates.iosmol_strc
lib.rssmol_strc
version0.3.5
created_at2025-11-10 15:27:56.78617+00
updated_at2026-01-10 19:11:15.174586+00
descriptionsmol_str forks, replace Arc with Rc
homepage
repositoryhttps://github.com/A4-Tacks/smol_strc
max_upload_size
id1925702
size100,402
A4-Tacks (A4-Tacks)

documentation

README

[!IMPORTANT] This crate is a fork of smol_str, And publish it again as smol_strc

Replacing Arc with Rc to improve single threaded performance

Independently maintained, but patches may be pulled from the source repo

After this line is the original README

smol_str

CI Crates.io API reference

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

  • size_of::<SmolStr>() == 24 (therefore == size_of::<String>() on 64 bit platforms)
  • 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
  • Additionally, a SmolStr can be explicitly created from a &'static str without allocation

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.

Benchmarks

Run criterion benches with

cargo bench --bench \* -- --quick

MSRV Policy

Minimal Supported Rust Version: latest stable.

Bumping MSRV is not considered a semver-breaking change.

Commit count: 187

cargo fmt