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,也许这就是为什么我可以这样做?