[![crates.io](https://img.shields.io/crates/v/tinyvec_string.svg)](https://crates.io/crates/tinyvec_string) [![docs.rs](https://docs.rs/tinyvec_string/badge.svg)](https://docs.rs/tinyvec_string/) ![Tests](https://github.com/ThatsNoMoon/tinyvec_string/workflows/Tests/badge.svg) # tinyvec_string [`tinyvec`](https://github.com/Lokathor/tinyvec) based string types. See [the docs.rs documentation](https://docs.rs/tinyvec_string/) `tinyvec_string` provides two string types: * `ArrayString`, a string backed by a fixed-size array on the stack, using `ArrayVec` * `TinyString`, a string backed by either a fixed-size array on the stack or a `Vec` on the heap ## Features Like `tinyvec`, `tinyvec_string` is `no_std` by default. `ArrayString` has no dependencies (other than `tinyvec` and `core`). `TinyString` requires the the `alloc` cargo feature to be enabled because it has a dependency on `alloc`: ```toml [dependencies] tinyvec_string = { version = "0.3.2", features = ["alloc"] } ``` Error types implement `std::error::Error` when the `std` feature is enabled. The `rustc_1_40` feature enables `tinyvec`'s `rustc_1_40` feature, which enables some optimizations for Rust versions >= 1.40. The `rustc_1_55` feature enables usage of const generics to allow usage of backing arrays of any size. The `rustc_1_57` feature enables `TinyString::try_reserve` and `TinyString::try_reserve_exact`. ## Safety This crate strives to be as safe as possible. Almost all internal `unsafe` code is copied verbatim from `std`'s `String` implementation for maximum reliability and performance. ## MSRV Like `tinyvec`, `tinyvec_string` (without `rustc` version features) supports Rust 1.34+. The `alloc` feature requires Rust 1.36+. ## Contributing Feel free to open an issue if you have a problem, or open a pull request if you have a solution. Also feel free to reach me on [the Rust Community Discord Server](https://discord.gg/aVESxV8) @ThatsNoMoon#0175. ## License `tinyvec_string` is dual-licensed under Apache-2.0 and MIT. Large sections of code, documentation, and tests were copied verbatim or copied and modified from [rust-lang/rust](https://github.com/rust-lang/rust); copyright for such content belongs to the original author.