macros.rs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // not all are used in all features configurations
  2. #![allow(unused)]
  3. /// Forward a method to an inherent method or a base trait method.
  4. macro_rules! forward {
  5. ($( Self :: $method:ident ( self $( , $arg:ident : $ty:ty )* ) -> $ret:ty ; )*)
  6. => {$(
  7. #[inline]
  8. fn $method(self $( , $arg : $ty )* ) -> $ret {
  9. Self::$method(self $( , $arg )* )
  10. }
  11. )*};
  12. ($( $base:ident :: $method:ident ( self $( , $arg:ident : $ty:ty )* ) -> $ret:ty ; )*)
  13. => {$(
  14. #[inline]
  15. fn $method(self $( , $arg : $ty )* ) -> $ret {
  16. <Self as $base>::$method(self $( , $arg )* )
  17. }
  18. )*};
  19. ($( $base:ident :: $method:ident ( $( $arg:ident : $ty:ty ),* ) -> $ret:ty ; )*)
  20. => {$(
  21. #[inline]
  22. fn $method( $( $arg : $ty ),* ) -> $ret {
  23. <Self as $base>::$method( $( $arg ),* )
  24. }
  25. )*};
  26. ($( $imp:path as $method:ident ( self $( , $arg:ident : $ty:ty )* ) -> $ret:ty ; )*)
  27. => {$(
  28. #[inline]
  29. fn $method(self $( , $arg : $ty )* ) -> $ret {
  30. $imp(self $( , $arg )* )
  31. }
  32. )*};
  33. }
  34. macro_rules! constant {
  35. ($( $method:ident () -> $ret:expr ; )*)
  36. => {$(
  37. #[inline]
  38. fn $method() -> Self {
  39. $ret
  40. }
  41. )*};
  42. }