私はPistonとSpriteを使って個人的なプロジェクトを進めています。私はすべてを描画するメソッドを呼び出ししようとしていますスプライト::シーン::描画を呼び出すときの型の不一致
scene.draw(c.transform, g);
:example codeこのメソッドを呼び出し。 は、私が最初に試さ:
draw<G: Graphics, S>(&self, c: &Context, g: &mut G, scene: &mut Scene<S>)
その後、コンパイラは型が実装する必要があると私に語った:
draw<G: Graphics>(&self, c: &Context, g: &mut G, scene: &mut Scene)
を次にコンパイラは、私はので、私はこれを試してみましたScene
に型パラメータを与える必要が私に語りましたトレイト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>>
ですが、メソッドのシグネチャには書きたくありません。
私は、2つの質問がある:
- は何コンパイラが私に教えしようとしていますか?
- シーンにメソッドを渡すにはどうすればよいですか?