Я пытаюсь сохранить текстуры поршня в структуре.
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,
}
}
}
Это не скомпилируется:
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
реализует gfx::Resources
, хотя (я думаю, что это просто конкретная реализация устройства.) Мне действительно не нравится, какой тип это есть, но мне нужно знать, чтобы я мог хранить его в структуре.
Я сделал компилируемое репо на Github.
(Я подозреваю, ржавые дженерики/черты: "ожидаемый 'Foo <B> ', найденный 'Foo <Foo2 > '" - это тот же самый вопрос, но Я не могу понять, как применить его к моей проблеме.)