Crate newstr
Simple macros for declaring String-base new types.
This crate provides simple macros that generate String based new types. The two primary macros
implement the validity rules for the new type by either 1) providing a predicate that is used by
the is_valid associated function, or 2) providing a function to parse and return a string which
is then called by FromStr::from_str.
Both of these methods produce a new type, with the following:
- An associated predicate function
is_validthat returnstrueif the string provided would be a valid value for the type. - This type derives implementations of
Clone,Debug,PartialEq,PartialOrd,Eq,Ord, andHash. - An implementation of
DisplayforTthat simply returns the inner value. - An implementation of
From<T>forString. - An implementation of
DerefforTwith the target typestr. - An implementation of
FromStr.
Example
The following example constructs a new string type that implements an Identifier value. This
value must be ASCII, alphanumeric, the '_' character and must not be empty.
use ;
use FromStr;
use Deref;
is_valid_newstring!;
assert!;
assert!;
assert!;
assert!;
assert_eq!;
assert_eq!;
Dependencies
In the example above you can see the necessary use-statements for the trait implementations the
macros generate. Unless you use regex_is_valid there are no crate dependencies; if you do you will
need to add lazy_static and regex dependencies.
If the macros in this crate take on addition dependencies or provide new implementations the set of
use statements may change which will break consumer builds. To avoid this another macro,
use_required, will add any required use statements the consumer requires.
# use ;
use_required!;
is_valid_newstring!;
Changes
Version 0.1.1
- Added new
use_requiredmacro. - Removed unnecessary feature 'regex_is_valid', the build doesn't require this to avoid bloat.
- Made
lazy_staticandregexdev dependencies, if you don't use them, you don't need them. - Added dependency on
cargo-huskyfor Git cleanliness.
Version 0.1.0
- Initial version.