compact_str
A memory efficient string type that can store up to 24* bytes on the stack (by ParkMyCar)
smol_str
By rust-analyzer
compact_str | smol_str | |
---|---|---|
16 | 3 | |
541 | 377 | |
- | 3.4% | |
7.6 | 6.5 | |
4 days ago | 15 days ago | |
Rust | Rust | |
MIT License | Apache License 2.0 |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
compact_str
Posts with mentions or reviews of compact_str.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-02-22.
-
Announcing `compact_str` version 0.7! A small string optimization for Rust
Not that I know of! As part of compact_str v0.6 we tried to make the API of CompactString 1:1 with String, inevitably we missed a few (1, 2, 3) things but they were fixed in this latest release.
... and more! Please see the CHANGELOG for more detail
-
Is there a type like `std::num::NonZero*` but for other values than zero?
(See the compact_str implementation as an example.)
-
Announcing `compact_str` version 0.6! A small string optimization for Rust
Along with performance improvements, this release includes implementing multiple methods for CompactString, to bring its API nearly 1:1 with String. The only exception being methods that don't have a direct port for a small string optimization, e.g. into_bytes, or methods that aren't yet stable. A full change log can be found here.
- What is Box and how is it different from String in Rust?
-
Announcing `compact_str` version 0.5! A small string optimization for Rust
Doing this has been on the back of my mind for a while, just filed an issue to track this! #119
-
Announcing `compact_str` version 0.4! A small string optimization for Rust
There's a draft pr for this.
-
Why is it so hard to get traction learning rust?
Here're a few projects I considered interesting (including my own project) and relatively easy to participate: - pushgen Push-style design pattern for processing of ranges and data-streams. - compact_str A memory efficient immutable string type that can store up to 24* bytes on the stack - openssh-rs Scriptable SSH through OpenSSH in Rust - pegasus A multi-node parametrized command runner with a focus on simplicity - concurrent_arena Container that can have elements insert/removed concurrently and uses a 'u32' as key.
-
Inlined string (in ~200 LOC)
I wrote something similar to compact_str, but it is: - a Box when on the heap - (so clone is O(n)) - (but still immutable) - 2 usizes in size
-
Is there any other programming language aside from C++ that has move semantics feature available?
Here you go: https://github.com/ParkMyCar/compact_str
smol_str
Posts with mentions or reviews of smol_str.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-02-20.
-
Ecow: Compact, clone-on-write vector and string.
I have a similar sentiment to u/matklad regarding this: https://github.com/rust-analyzer/smol_str/pull/37
-
Announcing `compact_str`! A super memory efficient immutable string that is transparently stored on the stack, when possible
Comparatively: * SmolStr can inline up to 22 bytes but does not adjust down for 32-bit architectures, meaning it's potentially wasting memory on 32-bit archs. Similarly though it's immutable and Clone is O(1) * SmartString can inline up to 23 bytes, but it's mutable and Clone is O(n). Also this crate makes assumptions about the memory layout of a String, which in theory should be fine, but is a slight caveat.
What are some alternatives?
When comparing compact_str and smol_str you can also consider the following projects:
smartstring - Compact inlined strings for Rust.
DIPs - D Improvement Proposals
ecow - Compact, clone-on-write vector and string.
openssh - Scriptable SSH through OpenSSH in Rust
zero-copy-pads - Padding/aligning values without heap allocation
rust - Empowering everyone to build reliable and efficient software.
perf-ninja-rs - Rust port of dendibakh/perf-ninja - an online course where you can learn and master the skill of low-level performance analysis and tuning.
pegasus - An SSH command runner with a focus on simplicity
readable - Human readable strings
pushgen
string-rosetta-rs - Comparison of Rust string types