Crate maybe_string[−][src]
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()));
Serde
Implementations of Serialize
and Deserialize
for MaybeString and Serialize
for MaybeStr can be enabled with serde
feature flag.
Structs
MaybeStr | MaybeString slices. |
MaybeString | A newtype wrapper that represents a byte vector that may be a valid UTF-8 string. |