'enum Var {

    string(String),

    int32(i32)

    // enum is used to be PascalCase

}

impl From<String> for Var {

    fn from(x:String) -> Self {

        Var::string(x)

    }

}

impl From<i32> for Var {

    fn from(x:i32) -> Self {

        Var::int32(x)

    }

}

fn f(x: Var) {

    match x {

        Var::string(s) => {

            println!("String: {}", s);

        },

        Var::int32(i) => {

            println!("i32: {}", i);

        }

    }

}

fn main() {

    f( 123.into() );

    f( "strrrrrrr".to_string().into() );

}


i32: 123 String: strrrrrrr