refactor: add newtype macro
All checks were successful
Rust / build (push) Successful in 1m18s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
All checks were successful
Rust / build (push) Successful in 1m18s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
This commit is contained in:
parent
be78597331
commit
2e71e40378
2 changed files with 58 additions and 0 deletions
|
@ -8,6 +8,7 @@ mod forge_name;
|
||||||
mod forge_type;
|
mod forge_type;
|
||||||
pub mod git_dir;
|
pub mod git_dir;
|
||||||
mod host_name;
|
mod host_name;
|
||||||
|
mod newtype;
|
||||||
mod registered_webhook;
|
mod registered_webhook;
|
||||||
mod repo_alias;
|
mod repo_alias;
|
||||||
mod repo_branches;
|
mod repo_branches;
|
||||||
|
|
57
crates/config/src/newtype.rs
Normal file
57
crates/config/src/newtype.rs
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
//
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! newtype {
|
||||||
|
($name:ident is a $type:ty, without Display) => {
|
||||||
|
#[derive(
|
||||||
|
Clone,
|
||||||
|
Default,
|
||||||
|
Debug,
|
||||||
|
derive_more::From,
|
||||||
|
PartialEq,
|
||||||
|
Eq,
|
||||||
|
PartialOrd,
|
||||||
|
Ord,
|
||||||
|
Hash,
|
||||||
|
derive_more::AsRef,
|
||||||
|
derive_more::Deref,
|
||||||
|
serde::Deserialize,
|
||||||
|
serde::Serialize,
|
||||||
|
)]
|
||||||
|
pub struct $name($type);
|
||||||
|
impl $name {
|
||||||
|
pub fn new(value: impl Into<$type>) -> Self {
|
||||||
|
Self(value.into())
|
||||||
|
}
|
||||||
|
pub fn unwrap(self) -> $type {
|
||||||
|
self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
($name:ident is a $type:ty) => {
|
||||||
|
#[derive(
|
||||||
|
Clone,
|
||||||
|
Default,
|
||||||
|
Debug,
|
||||||
|
derive_more::Display,
|
||||||
|
derive_more::From,
|
||||||
|
PartialEq,
|
||||||
|
Eq,
|
||||||
|
PartialOrd,
|
||||||
|
Ord,
|
||||||
|
Hash,
|
||||||
|
derive_more::AsRef,
|
||||||
|
derive_more::Deref,
|
||||||
|
serde::Deserialize,
|
||||||
|
serde::Serialize,
|
||||||
|
)]
|
||||||
|
pub struct $name($type);
|
||||||
|
impl $name {
|
||||||
|
pub fn new(value: impl Into<$type>) -> Self {
|
||||||
|
Self(value.into())
|
||||||
|
}
|
||||||
|
pub fn unwrap(self) -> $type {
|
||||||
|
self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue