macros.rs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #[cfg(feature = "log")]
  2. macro_rules! net_log {
  3. (trace, $($arg:expr),*) => { log::trace!($($arg),*); };
  4. (debug, $($arg:expr),*) => { log::debug!($($arg),*); };
  5. }
  6. #[cfg(feature = "defmt")]
  7. macro_rules! net_log {
  8. (trace, $($arg:expr),*) => { defmt::trace!($($arg),*); };
  9. (debug, $($arg:expr),*) => { defmt::debug!($($arg),*); };
  10. }
  11. #[cfg(not(any(feature = "log", feature = "defmt")))]
  12. #[macro_use]
  13. macro_rules! net_log {
  14. ($level:ident, $($arg:expr),*) => { $( let _ = $arg; )* }
  15. }
  16. macro_rules! net_trace {
  17. ($($arg:expr),*) => (net_log!(trace, $($arg),*));
  18. }
  19. macro_rules! net_debug {
  20. ($($arg:expr),*) => (net_log!(debug, $($arg),*));
  21. }
  22. macro_rules! enum_with_unknown {
  23. (
  24. $( #[$enum_attr:meta] )*
  25. pub enum $name:ident($ty:ty) {
  26. $(
  27. $( #[$variant_attr:meta] )*
  28. $variant:ident = $value:expr
  29. ),+ $(,)?
  30. }
  31. ) => {
  32. #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
  33. #[cfg_attr(feature = "defmt", derive(defmt::Format))]
  34. $( #[$enum_attr] )*
  35. pub enum $name {
  36. $(
  37. $( #[$variant_attr] )*
  38. $variant
  39. ),*,
  40. Unknown($ty)
  41. }
  42. impl ::core::convert::From<$ty> for $name {
  43. fn from(value: $ty) -> Self {
  44. match value {
  45. $( $value => $name::$variant ),*,
  46. other => $name::Unknown(other)
  47. }
  48. }
  49. }
  50. impl ::core::convert::From<$name> for $ty {
  51. fn from(value: $name) -> Self {
  52. match value {
  53. $( $name::$variant => $value ),*,
  54. $name::Unknown(other) => other
  55. }
  56. }
  57. }
  58. }
  59. }