spaik 0.3.1

The SPAIK Programming Language
Documentation
//! Miscellaneous Utilities

use std::convert::Infallible;

pub type Success = Result<(), Infallible>;

macro_rules! count_args {
    () => { 0 };
    ( $arg:expr ) => { 1 };
    ( $arg:expr, $($tail:expr),* ) => {
        1 + count_args!($($tail),*)
    }
}

/// SPAIK uses the convention:
/// ```ignore
/// invalid!(x, y, z) // <function that made them invalid>
/// ```
/// for marking variables that become invalidated, and may have pointers that no
/// longer point to valid data. Do not access any variable after invalid!(...)
/// has marked them, even if rustc will let you!
///
/// **Do not rely on all invalidated variables being documented**
macro_rules! invalid {
    ($($pv:ident),+) => {{}};
}