首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rust枚举定义类型层次结构?

如何使用Rust枚举定义类型层次结构?
EN

Stack Overflow用户
提问于 2018-09-21 07:11:11
回答 1查看 436关注 0票数 3

我正在尝试用Rust编写一个编译器,但我在理解如何使用枚举定义类型层次结构时遇到了问题。例如,我们有:

代码语言:javascript
复制
enum Thing {
    Animal,
    Plant,
}

struct Plant {
    color: String,
}

enum Animal {
    Dog,
    Cat,
}

struct Cat {
    name: String,
}

struct Dog {
    name: String,
}

let x = Dog { name: john };

如果我做模式匹配,Dog会被认为是Animal类型(或Thing类型)吗?如何使用枚举和结构创建此类型层次结构?我的类型层次结构有很多层次的深度。

EN

回答 1

Stack Overflow用户

发布于 2018-09-21 14:37:22

当你看这段代码的时候:

代码语言:javascript
复制
enum Thing {
    Animal,
    Plant,
}

struct Plant {
    color: String,
}

您会看到单词Plant两次。需要注意的重要一点是,这两个Plant__s是不同的、不相关的东西。仅仅因为它们具有相同的名称并不意味着它们代表相同的事物,事实上,当您采用完全限定名时,它们实际上并不具有相同的名称:第一个名称是::Thing::Plant,第二个名称只是纯::Plant

如果要将两者链接起来,则需要使用以下命令明确表示:

代码语言:javascript
复制
enum Thing {
    Animal(Animal),
    Plant(Plant),
}

有关更多详细信息,您可以查看the Rust book中的IpAddr示例。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52434518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档