physics2d 0.6.0

Yet another 2D physics engine, but with Iron power.
Documentation
pub mod pool;

macro_rules! match_owned_fn_to_variants {
    ($enum_name:ident::{$($variant:ident),*}; $val:expr, $fn_name:ident$args:tt) => {
        match $val {
            $(
            $enum_name::$variant(_data) =>  _data.$fn_name$args,
            )*
        }
    };
}

macro_rules! match_borrow_fn_to_variants {
    ($enum_name:ident::{$($variant:ident),*}; $val:expr, $fn_name:ident$args:tt) => {
        match $val {
            $(
            $enum_name::$variant(ref _data) =>  _data.$fn_name$args,
            )*
        }
    };
}

macro_rules! match_mut_fn_to_variants {
    ($enum_name:ident::{$($variant:ident),*}; $val:expr, $fn_name:ident$args:tt) => {
        match $val {
            $(
            $enum_name::$variant(ref mut _data) =>  _data.$fn_name$args,
            )*
        }
    };
}

macro_rules! generate_match_owned_fn_macro_for_enum {
    ($enum_name:ident::{$($variant:ident),*}; $macro_name:ident) => {
        macro_rules! $macro_name {
            ($val:expr, $fn_name:ident$args:tt) => {
                match_owned_fn_to_variants!($enum_name::{$($variant),*}; $val, $fn_name$args)
            };
        }
    };
}

macro_rules! generate_match_borrow_fn_macro_for_enum {
    ($enum_name:ident::{$($variant:ident),*}; $macro_name:ident) => {
        macro_rules! $macro_name {
            ($val:expr, $fn_name:ident$args:tt) => {
                match_borrow_fn_to_variants!($enum_name::{$($variant),*}; $val, $fn_name$args)
            };
        }
    };
}

macro_rules! generate_match_mut_fn_macro_for_enum {
    ($enum_name:ident::{$($variant:ident),*}; $macro_name:ident) => {
        macro_rules! $macro_name {
            ($val:expr, $fn_name:ident$args:tt) => {
                match_mut_fn_to_variants!($enum_name::{$($variant),*}; $val, $fn_name$args)
            };
        }
    };
}