我如何知道我必须在通用类型参数中添加哪些类型?

时间:2016-08-11 20:43:04

标签: rust

我通过查看和操纵其他人的例子来学习Rust。我试图将以下代码封装到结构中:

let mut encoder: gfx::Encoder<_, _> = factory.create_command_buffer().into();

我想创建一个这样的结构:

pub struct Window {
    encoder: gfx::Encoder<?, ?>,
    // ...
}

我如何知道我必须在问号中添加哪些类型?

1 个答案:

答案 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具有多态返回类型。它需要指定一些具体类型才能知道应该调用哪个实现。