string-newtype

Crates.iostring-newtype
lib.rsstring-newtype
version0.1.1
sourcesrc
created_at2024-04-21 15:48:07.69401
updated_at2024-04-22 18:41:36.57477
descriptionNew Type idiom helper for string-like types
homepagehttps://github.com/aborgna@string-newtype
repositoryhttps://github.com/aborgna@string-newtype
max_upload_size
id1215480
size34,862
Agustín Borgna (ABorgna)

documentation

https://docs.rs/string-newtype

README

string-newtype: New Type idiom helper for string-like types

build_status msrv codecov

string-newtype is a helper library for using the newtype idiom with string-like types, including newtyped string slices.

Usage

Define an empty enum as a marker for your type, and add aliases based on it:

// A marker type, can be anything.
enum S {}

// The newtype definitions.
// `StringBuf` acts as a `String`, while `StringRef` acts as a `str`.
type SBuf = StringBuf<S>;
type SRef = StringRef<S>;

// Define functions that only accept the newtype.
fn my_func(owned: SBuf, reference: &SRef) {
    // ...
}

// Only the newtype can be passed to the function.
let s: SBuf = "hello".into();
my_func(s.clone(), &s);

The crate also defines SmolStrBuf and SmolStrRef types, which are newtypes for smol_str::SmolStr.

Features

  • smol_str Enables newtypes for smol_str::SmolStrs.

  • serde Enables serialization and deserialization implementations.

Developing string-newtype

See DEVELOPMENT.md for instructions on setting up the development environment.

License

This project is licensed under Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

Commit count: 0

cargo fmt