promise-unsafe 0.1.0

Something help you avoid unsafe:)
Documentation
extern crate proc_macro;

#[macro_export]
macro_rules! promise {
    ($b:block) => {
        unsafe { $b }
    };
    ($s:stmt) => {
        unsafe { $s }
    };
    ($e:expr) => {
        unsafe { $e }
    };
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        let mut v = 0;
        let p: *mut i32 = &mut v;
        promise!(*p = 4);
        assert_eq!(v, 4);

        assert_eq!(
            promise!({
                *p = 3;
                *p
            }),
            3
        );

        assert_eq!(promise!(*p), 3);
    }
}