我正在使用 Piston 和 Sprite 进行个人项目。示例代码调用此方法:
scene.draw(c.transform, g);
我正在尝试调用一种方法来绘制所有内容。我第一次尝试:
draw<G: Graphics>(&self, c: &Context, g: &mut G, scene: &mut Scene)
然后编译器告诉我我需要给它一个类型参数Scene
所以我尝试了这个:
draw<G: Graphics, S>(&self, c: &Context, g: &mut G, scene: &mut Scene<S>)
然后编译器告诉我该类型需要实现特征ImageSize
所以我尝试了这个:
draw<G: Graphics, S: ImageSize>(&self, c: &Context, g: &mut G, scene: &mut Scene<S>)
然后我得到了这个错误:
error[E0271]: type mismatch resolving `<G as graphics::Graphics>::Texture == S`
--> src/game.rs:38:15
|
38 | scene.draw(c.transform, g);
| ^^^^ expected associated type, found type parameter
|
= note: expected type `<G as graphics::Graphics>::Texture`
found type `S`
我不明白编译器在这里想说什么。的完整类型Scene
是,sprite::Scene<piston_window::Texture<gfx_device_gl::Resources>>
但我不想在方法的签名中写下它。
那我有两个问题:
- 编译器想告诉我什么?
- 如何将场景传递给方法?