#string #serde #serialization #replace

fast-str

A flexible, easy-to-use, immutable, efficient String replacement for Rust

3 releases (1 stable)

1.0.0 Apr 5, 2023
0.1.1 Jan 5, 2023
0.1.0 Dec 14, 2022

#719 in Text processing

Download history 32/week @ 2023-12-17 14/week @ 2024-02-18 21/week @ 2024-02-25 1/week @ 2024-03-03 5/week @ 2024-03-10 1/week @ 2024-03-17 56/week @ 2024-03-31

62 downloads per month

MIT license

145KB
3K SLoC

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.

Dependencies

~0–13MB
~133K SLoC