1

具体的な構造体を使用して、具体的な型を使用してジェネリック関数を呼び出すことは可能ですか?

ここに私がやりたいことの小さな例があります:

trait T {}
trait T2 {}
struct S1 {}
struct S2 {}
impl T for S1 {}
impl T for S2 {}

fn test<V: T>(foo: &S1, bar: &S2, f: &Fn(&V)) {
    f::<S1>(foo);
    f(bar);
}

fn main() {
    test(&S1{}, &S2{}, &|_| println!("called"));
}

V解決したい実際の問題はもっと複雑であるため、ジェネリックパラメーターを取り除くことはできません。さらに、ラッピング トレイトを作成することはできません。これは、署名が弱い場合や、fさらに多くのトレイトが必要な場合があるためです。

4

2 に答える 2