trait F { fn f(_:i32, _:Self) where Self: Sized {} }

impl F for i32 {

    fn f(x: i32, y: Self) {

        println!("{x}, i32: {y}");

    }

}

impl F for &str {

    fn f(x: i32, y: Self) {

        println!("{x}, &str: {y}");

    }

}


fn main() {

    F::f( 10, 123 );

    F::f( 20, "strrrrrrr" );

}


10, i32: 123 20, &str: strrrrrrr