feat: add helper macros
This commit is contained in:
parent
8bcc6017ce
commit
41246c27ac
5 changed files with 90 additions and 0 deletions
|
@ -4,6 +4,8 @@ use std::path::PathBuf;
|
|||
use clap::Parser;
|
||||
use kxio::{fs::FileSystem, net::Net};
|
||||
|
||||
mod macros;
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
#[clap(version = clap::crate_version!(), author = clap::crate_authors!(), about = clap::crate_description!())]
|
||||
struct Commands {
|
||||
|
|
4
src/macros/mod.rs
Normal file
4
src/macros/mod.rs
Normal file
|
@ -0,0 +1,4 @@
|
|||
//
|
||||
mod newtype;
|
||||
mod print;
|
||||
mod to_string;
|
56
src/macros/newtype.rs
Normal file
56
src/macros/newtype.rs
Normal file
|
@ -0,0 +1,56 @@
|
|||
//
|
||||
#[macro_export]
|
||||
macro_rules! newtype {
|
||||
($name:ident, $docs:literal) => {
|
||||
#[doc = $docs]
|
||||
#[derive(
|
||||
Clone,
|
||||
Copy,
|
||||
Default,
|
||||
Debug,
|
||||
derive_more::Display,
|
||||
derive_more::From,
|
||||
PartialEq,
|
||||
Eq,
|
||||
PartialOrd,
|
||||
Ord,
|
||||
Hash,
|
||||
derive_more::AsRef,
|
||||
derive_more::Constructor,
|
||||
serde::Serialize,
|
||||
serde::Deserialize,
|
||||
)]
|
||||
pub struct $name;
|
||||
};
|
||||
($name:ident, $type:ty $(, $derive:ty)*, $docs:literal) => {
|
||||
#[doc = $docs]
|
||||
#[derive(
|
||||
Clone,
|
||||
Debug,
|
||||
derive_more::From,
|
||||
PartialEq,
|
||||
Eq,
|
||||
derive_more::AsRef,
|
||||
derive_more::Deref,
|
||||
serde::Serialize,
|
||||
serde::Deserialize,
|
||||
$($derive),*
|
||||
)]
|
||||
pub struct $name($type);
|
||||
impl $name {
|
||||
pub fn new(value: impl Into<$type>) -> Self {
|
||||
Self(value.into())
|
||||
}
|
||||
#[allow(clippy::missing_const_for_fn)]
|
||||
#[must_use]
|
||||
pub fn peel(self) -> $type {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
impl From<$name> for $type {
|
||||
fn from(value: $name) -> $type {
|
||||
value.peel()
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
14
src/macros/print.rs
Normal file
14
src/macros/print.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
#[macro_export]
|
||||
macro_rules! p {
|
||||
($($arg:tt)*) => {{
|
||||
println!($($arg)*);
|
||||
}};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! e {
|
||||
($($arg:tt)*) => {{
|
||||
eprintln!($($arg)*);
|
||||
}};
|
||||
}
|
14
src/macros/to_string.rs
Normal file
14
src/macros/to_string.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
#[macro_export]
|
||||
macro_rules! s {
|
||||
($value:expr) => {
|
||||
$value.to_string()
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! f {
|
||||
($($arg:tt)*) => {
|
||||
format!($($arg)*)
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue