我通过查看和操纵其他人的例子来学习Rust。我试图将以下代码封装到结构中:
let mut encoder: gfx::Encoder<_, _> = factory.create_command_buffer().into();
我想创建一个这样的结构:
pub struct Window {
encoder: gfx::Encoder<?, ?>,
// ...
}
我如何知道我必须在问号中添加哪些类型?
答案 0 :(得分:3)
更改变量的类型(encoder
)以导致类型不匹配。最简单的类型是()
:
let mut encoder: gfx::Encoder<(), ()> = factory.create_command_buffer().into();
这将生成具体类型的错误,然后您可以清理并直接使用。
另见How do I print the type of a variable in Rust?。
在许多情况下,你会使用更简单的东西:
let mut encoder: () = factory.create_command_buffer().into();
但是这不可能在这个特定的情况下起作用,因为into
具有多态返回类型。它需要指定一些具体类型才能知道应该调用哪个实现。