
https://wiki.nesdev.com/w/index.php/Programming_guide
Size: a a a
smallvec
, а typed_arena
станет одним из варинатов аллокаторов.A SmolStr is a string type that has the following properties:https://github.com/rust-analyzer/smol_str
* 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.
assert_eq!("419.0 MB", ByteSize::mb(419).to_string());