有没有Rust中类似这样的功能?
据我所知,使用Rust的通用函数是不可能实现这一点的,因为它们只能使用数据类型而不能使用值。
#include <iostream>
template<int T>
int foo(int a)
{
return -1;
}
template<>
int foo<2>(int a)
{
return a*a;
}
template<>
int foo<3>(int a)
{
return a*a*a;
}
int main()
{
std::cout << "foo<1>(3): "<<foo<1>(3) << std::endl;
std::cout << "foo<2>(3): "<<foo<2>(3) << std::endl;
std::cout << "foo<3>(3): "<<foo<3>(3) << std::endl;
return 1;
}
结果:
foo<1>(3): -1
foo<2>(3): 9
foo<3>(3): 27