pumpkin-core 0.4.0

The core of the Pumpkin constraint programming solver.
Documentation
#[cfg(all(not(test), not(feature = "debug-checks")))]
pub const PUMPKIN_ASSERT_LEVEL_DEFINITION: u8 = PUMPKIN_ASSERT_SIMPLE;

#[cfg(any(test, feature = "debug-checks"))]
pub const PUMPKIN_ASSERT_LEVEL_DEFINITION: u8 = PUMPKIN_ASSERT_EXTREME;

pub const PUMPKIN_ASSERT_SIMPLE: u8 = 1;
pub const PUMPKIN_ASSERT_MODERATE: u8 = 2;
pub const PUMPKIN_ASSERT_ADVANCED: u8 = 3;
pub const PUMPKIN_ASSERT_EXTREME: u8 = 4;

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_simple {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_SIMPLE {
            assert!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_eq_simple {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_SIMPLE {
            assert_eq!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_ne_simple {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_SIMPLE {
            assert_ne!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_moderate {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_MODERATE {
            assert!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_eq_moderate {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_MODERATE {
            assert_eq!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_ne_moderate {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_MODERATE {
            assert_ne!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_advanced {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_ADVANCED {
            assert!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_eq_advanced {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_ADVANCED {
            assert_eq!($($arg)*);
        }
    };
}

#[macro_export]
#[doc(hidden)]
macro_rules! pumpkin_assert_extreme {
    ($($arg:tt)*) => {
        if $crate::asserts::PUMPKIN_ASSERT_LEVEL_DEFINITION >= $crate::asserts::PUMPKIN_ASSERT_EXTREME {
            assert!($($arg)*);
        }
    };
}