🪪 id_newtype
Implements logic for a Cow<'static, str> newtype where only [A-Za-z0-9_]
are valid characters.
Implementations are provided for:
IdType::newIdType::new_unchecked(with#[doc(hidden)])IdType::is_valid_idIdType::into_innerstd::borrow::Borrow<str>std::convert::AsRef<str>std::convert::TryFrom<String>std::convert::TryFrom<&'static str>std::fmt::Displaystd::ops::Derefstd::ops::DerefMutstd::str::FromStr
A separate error type is also generated, which indicates an invalid value
when the ID type is instantiated with new.
Usage
In Cargo.toml:
= "0.2.0" # or
= { = "0.2.0", = ["macros"] }
In code:
// in lib.rs
extern crate id_newtype;
// in your ID module, e.g. `my_id.rs`
use Cow;
// Rename your ID type
;
id_newtype!;
If you have a procedural macro that checks for ID validity1 at compile time, you may pass in its name as follows:
extern crate id_newtype;
use Cow;
// Either use `id_newtype::id`, or replace this with your own proc macro.
use id;
// use my_crate_static_check_macros::my_id;
// Rename your ID type
;
id_newtype!;
1 You can either enable the "macros" feature and have access to
the id! macro, or implement your own proc macro. See
id_newtype_macros for an example.
Features
-
"macros"This feature enables theid!compile-time checked proc macro for safe construction of IDs at compile time.# #
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.