error_tools 0.27.0

Basic exceptions handling mechanism
Documentation
/// Define a private namespace for all its items.
mod private {
  ///
  /// Macro asserts that two expressions are identical to each other. Unlike `std::assert_eq` it is removed from a release build.
  ///
  #[macro_export]
  macro_rules! debug_assert_id
  {
    ( $( $arg : tt )+ ) =>
    {
      #[cfg(debug_assertions)]
      // $crate::assert_eq!( $( $arg )+ );
      std::assert_eq!( $( $arg )+ );
    };
    // ( $left : expr, $right : expr $(,)? ) =>
    // {{
    //   match( &$left, &$right )
    //   {
    //     #[cfg(debug_assertions)]
    //     ( left_val, right_val ) =>
    //     {
    //       if !( *left_val == *right_val )
    //       {
    //         let kind = core::panicking::AssertKind::Eq;
    //         core::panicking::assert_failed
    //         (
    //           kind,
    //           &*left_val,
    //           &*right_val,
    //           core::option::Option::None,
    //         );
    //       }
    //     }
    //   }
    // }};
    // ( $left : expr, $right:expr, $( $arg : tt )+ ) =>
    // {{
    //   match( &$left, &$right )
    //   {
    //     #[cfg(debug_assertions)]
    //     ( left_val, right_val ) =>
    //     {
    //       if !(*left_val == *right_val)
    //       {
    //         let kind = core::panicking::AssertKind::Eq;
    //         core::panicking::assert_failed
    //         (
    //           kind,
    //           &*left_val,
    //           &*right_val,
    //           core::option::Option::Some( $crate::format_args!( $( $arg )+ ) ),
    //         );
    //       }
    //     }
    //   }
    // }};
  }

  /// Macro asserts that two expressions are identical to each other. Unlike `std::assert_eq` it is removed from a release build. Alias of `debug_assert_id`.
  #[macro_export]
  macro_rules! debug_assert_identical
  {
    ( $( $arg : tt )+ ) =>
    {
      #[cfg(debug_assertions)]
      $crate::debug_assert_id!( $( $arg )+ );
    };
  }

  /// Macro asserts that two expressions are not identical to each other. Unlike `std::assert_eq` it is removed from a release build.
  #[macro_export]
  macro_rules! debug_assert_ni
  {
    ( $( $arg : tt )+ ) =>
    {
      #[cfg(debug_assertions)]
      // $crate::assert_ne!( $( $arg )+ );
      std::assert_ne!( $( $arg )+ );
    };
  }

  /// Macro asserts that two expressions are not identical to each other. Unlike `std::assert_eq` it is removed from a release build.
  #[macro_export]
  macro_rules! debug_assert_not_identical
  {
    ( $( $arg : tt )+ ) =>
    {
      #[cfg(debug_assertions)]
      // $crate::assert_ne!( $( $arg )+ );
      $crate::debug_assert_ni!( $( $arg )+ );
    };
  }

  // /// Macro asserts that expression is ture. Unlike std::assert it is removed from a release build.
  //
  // #[ macro_export ]
  // macro_rules! debug_assert
  // {
  //   ( $( $arg : tt )+ ) =>
  //   {
  //     #[cfg(debug_assertions)]
  //     $crate::assert!( $( $arg )+ );
  //   };
  // }

  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use debug_assert_id;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use debug_assert_identical;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use debug_assert_ni;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use debug_assert_not_identical;
}

/// Own namespace of the module.
#[allow(unused_imports)]
pub mod own {

  use super::*;
  #[doc(inline)]
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use orphan::*;
}

#[doc(inline)]
#[allow(unused_imports)]
#[allow(clippy::pub_use)]
pub use own::*;

/// Shared with parent namespace of the module
#[allow(unused_imports)]
pub mod orphan {

  use super::*;
  #[doc(inline)]
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use exposed::*;
}

/// Exposed namespace of the module.
#[allow(unused_imports)]
pub mod exposed {

  use super::*;
  #[doc(inline)]
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use prelude::*;
}

/// Prelude to use essentials: `use my_module::prelude::*`.
#[allow(unused_imports)]
pub mod prelude {

  use super::*;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use private::debug_assert_id;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use private::debug_assert_identical;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use private::debug_assert_ni;
  #[allow(clippy::useless_attribute, clippy::pub_use)]
  pub use private::debug_assert_not_identical;
}