This crate provides the new_type_pair!
macro, which allows for the creation of
a wrapping type over primitives and their references. For example, when creating
a strongly-typed wrapper for an identifier around a String
, we may also want
an accompanying strongly-typed wrapper around the reference type str
. This can
enable better zero-copy behavior while still keeping the benefits of a
strongly-typed wrapper.
The reference new type must implement the NewTypeRef
trait, which provides a
mechanism for validating that the value is valid before returning the wrapped
new type. It also ensures that you are able to seamlessly transition between the
reference type, the owned type, the underlying owned type, and the underlying
reference type through the automatic implementation of From
, AsRef
,
Borrow
, PartialEq
, and PartialOrd
, as well as Serialize
and
Deserialize
when the serde
feature is enabled.