maybe-string

Crates.iomaybe-string
lib.rsmaybe-string
version0.1.0
sourcesrc
created_at2021-02-25 17:34:35.384241
updated_at2021-02-25 17:34:35.384241
descriptionProvides a newtype wrapper that represents a byte vector that may be a valid UTF-8 string
homepagehttps://sr.ht/~jpastuszek/maybe-string/
repositoryhttps://git.sr.ht/~jpastuszek/maybe-string
max_upload_size
id360562
size11,260
Jakub Pastuszek (jpastuszek)

documentation

https://docs.rs/maybe-string

README

Latest Version Documentation License

Provides a newtype wrapper MaybeString and its slice counterpart MaybeStr that represents a byte vector that may be a valid UTF-8 string.

These wrappers are useful when working with data that may be a valid UTF-8 string and you want to delay or conditionally skip its conversion to the string.

They are also useful for debugging data that may be displayed as a string. The Debug output will provide string representation when the wrapped byte vector is a valid UTF-8 string.

Usage examples

Debugging byte vectors

use maybe_string::MaybeString;

// invalid UTF-8 bytes
let ms = MaybeString(vec![0, 159, 146, 150]);
assert_eq!(&format!("{:?}", ms), "[00, 9f, 92, 96]");

// valid UTF-8 bytes
let ms = MaybeString(vec![240, 159, 146, 150]);
assert_eq!(&format!("{:?}", ms), "\"💖\"");

Converting to a string

use maybe_string::MaybeString;

// invalid UTF-8 bytes
let ms = MaybeString(vec![0, 159, 146, 150]);
assert_eq!(ms.into_string(), Err(vec![0, 159, 146, 150]));

// valid UTF-8 bytes
let ms = MaybeString(vec![240, 159, 146, 150]);
assert_eq!(ms.into_string(), Ok("💖".to_string()));
Commit count: 0

cargo fmt