Ich versuche, Kolben Texturen in einer Struktur zu speichern."Expected type parameter" Fehler im Konstruktor einer generischen Struktur
struct TextureFactory<R> where R: gfx::Resources {
block_textures: Vec<Rc<Texture<R>>>,
}
impl<R> TextureFactory<R> where R: gfx::Resources {
fn new(window: PistonWindow) -> Self {
let texture = Rc::new(gfx_texture::Texture::from_path(
&mut *window.factory.borrow_mut(),
"assets/element_red_square.png",
Flip::None, &TextureSettings::new()
).unwrap());
let block_textures = Vec::new();
block_textures.push(texture);
TextureFactory {
block_textures: block_textures,
}
}
}
Dies lässt sich nicht kompilieren:
src/main.rs:37:9: 39:10 error: mismatched types:
expected `TextureFactory<R>`,
found `TextureFactory<gfx_device_gl::Resources>`
(expected type parameter,
found enum `gfx_device_gl::Resources`)
gfx_device_gl::Resources
implements gfx::Resources
obwohl (ich glaube, es ist nur die gerätespezifische Implementierung.) Ich interessiere mich nicht wirklich, welche Art dies ist, aber ich brauche, dies zu wissen dass ich es in der Struktur speichern kann.
Ich habe einen compilable repo on Github.
(ich vermute Rust generics/traits: "expected 'Foo<B>', found 'Foo<Foo2>'" die gleiche Frage, aber ich kann nicht herausfinden, wie es zu meinem Problem anzuwenden.)
Mögliches Duplikat von http://StackOverflow.com/Questions/31490913/Rust-Generics-Expected-T-Found-Foo oder http://StackOverflow.com/Questions/31060851/Generics-error-expected-Type- parameter-found-struct – Shepmaster
Sie können [Merkmalsobjekte] (http://doc.rust-lang.org/book/trait-objects.html) verwenden, um die Art von Polymorphie zu erreichen, die Ihr Code beinhaltet. – cheme