fast-str

Crates.iofast-str
lib.rsfast-str
version1.0.0
sourcesrc
created_at2022-12-14 08:58:53.605386
updated_at2023-04-05 04:35:27.2909
descriptionA flexible, easy-to-use, immutable, efficient `String` replacement for Rust.
homepage
repositoryhttps://github.com/xxXyh1908/rust-fast-str
max_upload_size
id736433
size157,757
(xxXyh1908)

documentation

README

fast-str

FastStr: Optimized for map keys.

Crates Status

What is FastStr

FastStr is a read-only string wrapper. You can think of it as an ownership &str type. FastStr uses three variants of &'static str, Arc<String> and StackString, and automatically selects the best storage method; And optimized string cloning and string comparison.

What Is It For?

FastStr is better than String as long as it is not often necessary to modify strings and connect strings.

How To Use It?

String constants are easily wrapped into the unified FastStr type. For other string types, different types of storage will be automatically selected.

use fast_str::FastStr;
// compile-time constants
const EMPTY_STR: FastStr = FastStr::new();
const STATIC_STR: FastStr = FastStr::from_static("💙❤");
let str1: FastStr = "🍷 wink".into();
// String storage is used in 32-bit machines,
// and stack memory is used in 64 bit machines to store strings
let str2 = FastStr::from_ref("😆 Happy");
// You can use the operator '+' to connect strings.
let str3: FastStr = str1 + str2;
// O(1) Clone() of time complexity.
let str4: FastStr = str3.clone();
// You can use String as the storage variant of FastStr,
// and when FastStr has the sole ownership of the String variant,
// no performance consumption is converted to the String type.
let from_string = FastStr::from_string(String::from("hello world"));
let from_faststr = String::from(from_string);

Feature Flags

fast-str comes with optional support for the following crates through Cargo feature flags. You can enable them in your Cargo.toml file like this:

[dependencies]
fast-str = { version = "*", features = ["rocket", "serde"] }
Feature Description
arbitrary Arbitrary implementation for [FastStr].
actix-web Responder implementation for [FastStr].
serde Serialize and Deserialize implementations for [FastStr].
diffus Same and Deserialize implementations for [FastStr].

License

Licensed under either of

at your option.

Commit count: 16

cargo fmt