penum 0.1.30

Make enum conform to a given pattern
Documentation
#![allow(dead_code)]
#![allow(unused_variables)]
#![allow(unreachable_patterns)]
extern crate penum;
use penum::penum;

#[penum]
trait Cool {
    type Target;
    fn mine(&self, value: Self::Target) -> &i32;
}

impl Cool for i32 {
    type Target = String;
    fn mine(&self, value: String) -> &i32 {
        self
    }
}

#[penum( _ where i32: ^Cool )]
enum Mine5 {
    V1(i32),
    V2(i32),
    V3(i32, i32),
}

fn main() {
    let m = Mine5::V1(10);

    let s = m.mine("wewe".to_string());

    assert_eq!(&10, s);
}