【发布时间】:2021-09-30 17:45:50
【问题描述】:
考虑我构建的以下结构。这样做的目的 struct 将在 layers 变量中包含以下数据类型之一,可以是 2D Vector of Networks,或一维网格向量。我最初的计划是将 layers 变量设置为枚举(如下所示),但是我想在设置后附加到枚举中的值 - 我别 认为枚举允许不复制?
这让我想到了我的问题:如何将 layers 定义为 通用值并将其限制为仅允许 2D 向量 网络,还是一维网格向量?即使与 枚举是可能的,我想使用泛型会更干净。
pub(crate) struct Mapping {
layers: NodeDefinition
}
impl Mapping {
pub(crate) fn new(node_definition: NodeDefinition) -> Mapping {
Mapping {
layers: node_definition
}
}
}
pub(crate) enum NodeDefinition {
NODE(Vec<Vec<Network>>),
LEAF(Vec<Mesh>),
}
【问题讨论】:
-
我认为枚举是正确的选择,当然你可以改变枚举的内容,只要你有可变的访问权限。
-
一些旁注:枚举变体默认为大驼峰式。将二维数组表示为
Vec<Vec<...>>并不是最有效的方法 - 通常最好使用平面Vec<...>并提供合适的访问方法,因此您可以使用两个索引对其进行索引。 -
谢谢,很高兴知道我在枚举的正确轨道上。拥有 1D vec 会更有效也是有道理的。