Generics 是否可以编写一个通用的rust函数来告诉您给定的枚举变量是否在容器中?

Generics 是否可以编写一个通用的rust函数来告诉您给定的枚举变量是否在容器中?,generics,enums,rust,Generics,Enums,Rust,换句话说,如果您有: enum Foo { Bar(String), Buzz(i32) } 您能否编写一个泛型函数来检查向量是否包含特定的变量(其中所需的变量是泛型参数) fn f(x:Vec)->bool{ 对于i&x{ 如果设T(…)=i{ 返回true; } } 返回false; } 然后打电话说: assert!(f::<Foo::Buzz>(x)); assert!(f::(x)); 我认为这可能相当于询问是否匹配可以是泛型函数而不是宏。不,不能将en

换句话说,如果您有:

enum Foo {
   Bar(String),
   Buzz(i32)
}
您能否编写一个泛型函数来检查向量是否包含特定的变量(其中所需的变量是泛型参数)

fn f(x:Vec)->bool{
对于i&x{
如果设T(…)=i{
返回true;
}
}
返回false;
}
然后打电话说:

assert!(f::<Foo::Buzz>(x));
assert!(f::(x));

我认为这可能相当于询问
是否匹配
可以是泛型函数而不是宏。

不,不能将enum variant用作泛型参数,因为它不是类型。

不,不能将enum variant用作泛型参数,因为它不是类型。

您似乎在要求一些非常具体的东西。你需要它如此具体,还是可以用另一种方式解决你的问题?例如,您是否需要将变量用作泛型参数,或者这只是处理更广泛任务的一种特殊方式?我还想注意一个语义错误:1)f应该返回bool;2)
f
使用
断言需要一个参数。如别处所述,您不能将枚举变量用作泛型参数,但可以使用函数参数而不是泛型类型来实现类似的功能。@Kitsu oops, fixed@joelb我特别问这个问题是因为我试图理解这是否是变体/泛型的语言限制。Luki446的回答表明是的。当你遇到一个你首先想到的是想要这个功能的情况时,知道其他的选择是什么对人们来说还是很有用的。你似乎在要求一些非常具体的东西。你需要它如此具体,还是可以用另一种方式解决你的问题?例如,您是否需要将变量用作泛型参数,或者这只是处理更广泛任务的一种特殊方式?我还想注意一个语义错误:1)f应该返回bool;2) 
f
使用
断言需要一个参数。如别处所述,您不能将枚举变量用作泛型参数,但可以使用函数参数而不是泛型类型来实现类似的功能。@Kitsu oops, fixed@joelb我特别问这个问题是因为我试图理解这是否是变体/泛型的语言限制。Luki446的回答表明是的。不过,当您遇到第一个想法是想要此功能的情况时,了解替代方案对人们来说可能仍然很有用。
assert!(f::<Foo::Buzz>(x));