1 unstable release
0.1.0 | Feb 1, 2025 |
---|
#390 in Configuration
162 downloads per month
16KB
192 lines
🪪 id_newtype
Implements logic for a Cow<'static, str>
newtype where only [A-Za-z0-9_]
are valid characters.
Implementations are provided for:
IdType::new
IdType::new_unchecked
(with#[doc(hidden)]
)IdType::is_valid_id
IdType::into_inner
std::borrow::Borrow<str>
std::convert::AsRef<str>
std::convert::TryFrom<String>
std::convert::TryFrom<&'static str>
std::fmt::Display
std::ops::Deref
std::ops::DerefMut
std::str::FromStr
A separate error type is also generated, which indicates an invalid value when the ID type is instantiated with new
.
Usage
use std::borrow::Cow;
// Rename your ID type
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
pub struct MyIdType(Cow<'static, str>);
crate::id_newtype!(
MyIdType, // Name of the ID type
MyIdTypeInvalidFmt // Name of the invalid value error
);
If you have a procedural macro that checks for ID validity1 at compile time, you may pass in its name as follows:
use std::borrow::Cow;
// replace this with your ID type's macro
use my_crate_static_check_macros::my_id_type;
// Rename your ID type
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
pub struct MyIdType(Cow<'static, str>);
crate::id_newtype!(
MyIdType, // Name of the ID type
MyIdTypeInvalidFmt, // Name of the invalid value error
my_id_type // Name of the static check macro
);
1 This crate was extracted from peace
, so the my_crate_static_check_macros
is not generated for you. You must implement it yourself. See static_check_macros
for an example.
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.
Dependencies
~215KB