不匹配的类型:预期的somestruct&lt; _,_&gt;得到了一些结构<r,f>

时间:2015-10-02 08:17:11

标签: rust type-inference type-mismatch

有人可以解释一下这个错误是什么意思吗?这实际上是相同的结构。 它是否无法以某种方式推断R或F并以这种方式报告?

src/demo.rs:113:51: 113:65 error: mismatched types:
 expected `&mut gfx_debug_draw::debug_renderer::DebugRenderer<_, _>`,
    found `&mut gfx_debug_draw::debug_renderer::DebugRenderer<R, F>`
(expected struct `gfx_debug_draw::debug_renderer::DebugRenderer`,
    found a different struct `gfx_debug_draw::debug_renderer::DebugRenderer`) [E0308]
src/demo.rs:113                 self.skeleton.draw(&global_poses, debug_renderer, settings.draw_labels);
                                                                  ^~~~~~~~~~~~~~

违规行在这里: https://github.com/PistonDevelopers/skeletal_animation_demo/blob/master/src/demo.rs#L113 debug_renderer在这里定义: https://github.com/PistonDevelopers/skeletal_animation_demo/blob/master/src/demo.rs#L97 这些类型来自impl: https://github.com/PistonDevelopers/skeletal_animation_demo/blob/master/src/demo.rs#L43

功能本身在这里: https://github.com/PistonDevelopers/skeletal_animation/blob/master/src/skeleton.rs#L66-L70

Rust 1.5和1.3,同样的错误。

1 个答案:

答案 0 :(得分:4)

看起来您的项目使用了两个不同版本的gfx_debug_draw(因此found a different struct gfx_debug_draw::debug_renderer::DebugRenderer。它是相同的结构,但来自同一个软件包的不同版本。),可能是因为您指定了一个版本Cargo.toml和您的一个依赖项指定了不同的版本。您应该检查Cargo.lock以查看是否属实,然后确保在任何地方使用相同版本的包。