作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的游戏引擎开发 Assets 管理器。
这是代码的简化版本:
trait Animal {
fn create<P>(name: P) -> Self
where
P: Into<PathBuf>;
}
struct Dog;
impl Animal for Dog {
fn create<P>(name: P) -> Self
where
P: Into<PathBuf>
{
Self {}
}
}
fn create_animal<A, P>(name: P) -> A
where
P: Into<PathBuf>,
A: Animal,
{
A::create(name)
}
当我尝试调用
create_animal
像这样,我收到以下错误:
let dog = create_animal::<Dog>("Spike"); // Error: wrong number of type arguments: expected 2, found 1
现在可以调用此函数的唯一方法是显式传递两种类型:
let dog = create_animal::<Dog, &str>("Spike"); // This code is correct
我想知道是否有任何方法可以在不显式传递其类型的情况下将 Into 与任何其他特征绑定(bind)一起使用(如第一个示例中所示)。
最佳答案
您可以使用 _
不指定第二种类型:
let dog = create_animal::<Dog, _>("Spike");
或者指定变量的类型:
let dog: Dog = create_animal("Spike");
关于rust - Into<PathBuf> 的多个泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62975050/
我是一名优秀的程序员,十分优秀!