Generics 在结构中嵌入泛型

Generics 在结构中嵌入泛型,generics,rust,Generics,Rust,我发现在使用锈菌特性时会遇到困难,例如,哪种方法是正确的 pub struct Cube<R>{ pub vertex_data: [Vertex;24], pub asMesh: gfx::Mesh<R> } pub结构多维数据集{ 发布顶点数据:[vertex;24], 发布asMesh:gfx::Mesh } 定义结构时只能使用泛型,但可以使用这些泛型上的特征边界将其限制为特定类型。在这里,我使用了where子句: trait Vertex {}

我发现在使用锈菌特性时会遇到困难,例如,哪种方法是正确的

pub struct Cube<R>{
    pub vertex_data: [Vertex;24],
    pub asMesh: gfx::Mesh<R>
}
pub结构多维数据集{
发布顶点数据:[vertex;24],
发布asMesh:gfx::Mesh
}

定义结构时只能使用泛型,但可以使用这些泛型上的特征边界将其限制为特定类型。在这里,我使用了
where
子句:

trait Vertex {}

struct Mesh<R> {
    r: R,
}

struct Cube<V, R>
    where V: Vertex,
{
    vertex_data: [V; 24],
    mesh: Mesh<R>,
}

fn main() {}
trait顶点{}
结构网格{
r:r,
}
结构立方体
其中V:顶点,
{
顶点_数据:[V;24],
网格:网格,
}
fn main(){}
您还需要在任何方法实现上使用这些边界:

impl<V, R> Cube<V, R>
    where V: Vertex,
{
    fn new(vertex: V, mesh: Mesh<R>) -> Cube<V, R> { ... }
}
impl多维数据集
其中V:顶点,
{
fn新(顶点:V,网格:网格)->立方体{…}
}

事实上,您经常只会看到实现中的
where
子句,而不会看到结构。这是因为您通常只通过方法访问结构,并且结构对最终用户是不透明的。如果您有公共字段,则可能值得在这两个位置都保留边界。

Hmm。。。我已经能够像我发布的那样使用struct,但是,我每晚都在使用rust,也许这就是为什么我可以这样做?