Fix cfg(feature = "serde") usages

This commit is contained in:
Michael Pfaff 2022-05-19 13:44:58 -04:00
parent 55ea832ba5
commit c2612a146e
Signed by: michael
GPG Key ID: CF402C4A012AA9D4
1 changed files with 93 additions and 8 deletions

View File

@ -79,10 +79,9 @@ macro_rules! query_def_filter {
};
}
/// Defines a dynamic query structure.
#[macro_export]
macro_rules! query_def {
(
macro_rules! query_def_internal {
(@
$(
$(#[$meta:meta])
*
@ -102,25 +101,21 @@ macro_rules! query_def {
) => {
$(
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
$(#[$meta])
*
$vis struct $data {
$(
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
$(#[$field_meta])
*
pub $field: Option<$crate::query_def_type!(@ $($qualifier)? ($($type)+))>,
)+
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, Default)]
$(#[$def_meta])
*
$vis struct $def {
$(
#[cfg_attr(feature = "serde", serde(default))]
pub $field: $crate::query_def_field!(@ $($qualifier)? ($($type)+)),
)+
}
@ -141,3 +136,93 @@ macro_rules! query_def {
*
};
}
/// Defines a dynamic query structure.
#[cfg(not(feature = "serde"))]
#[macro_export]
macro_rules! query_def {
(
$(
$(#[$meta:meta])
*
$vis:vis $data:ident(
$(#[$def_meta:meta])
*
$def:ident
) {
$(
$(#[$field_meta:meta])
*
$field:ident: $($qualifier:lifetime)? ($($type:tt)+),
)+
}
)
*
) => {
$crate::query_def_internal!(@
$(
$(#[$meta])
*
$vis $data(
$(#[$def_meta])
*
$def
) {
$(
$(#[$field_meta])
*
$field: $($qualifier)? ($($type)+),
)+
}
)
*
);
};
}
/// Defines a dynamic query structure.
#[cfg(feature = "serde")]
#[macro_export]
macro_rules! query_def {
(
$(
$(#[$meta:meta])
*
$vis:vis $data:ident(
$(#[$def_meta:meta])
*
$def:ident
) {
$(
$(#[$field_meta:meta])
*
$field:ident: $($qualifier:lifetime)? ($($type:tt)+),
)+
}
)
*
) => {
$crate::query_def_internal!(@
$(
#[derive(Serialize, Deserialize)]
$(#[$meta])
*
$vis $data(
#[derive(Serialize, Deserialize)]
#[serde(default)]
$(#[$def_meta])
*
$def
) {
$(
#[serde(skip_serializing_if = "Option::is_none")]
$(#[$field_meta])
*
$field: $($qualifier)? ($($type)+),
)+
}
)
*
);
};
}