我试图通过给自己一个定向任务来获得更多的编程习惯,而我发现的那个似乎是一个很好的匹配 . 由于我专注于学习Python,我认为将教程转换为Python是一种很好的做法 . 我想同时,这会教我一些关于Rust的内容,以及一般的阅读代码 . 一场胜利!
我很难理解关键字是什么(甚至是关键字?) Some
和 Simple
. 它们出现在提供的代码中:
enum Selector {
Simple(SimpleSelector),
}
struct SimpleSelector {
tag_name: Option<String>,
id: Option<String>,
class: Vec<String>,
}
我认为枚举是一种存储数据的方式,可能(确切地)是几种可能的类型之一,但我不明白这意味着什么 .
作者代码中出现的另一件事是(例如)
match self.next_char() {
'#' => {
self.consume_char();
selector.id = Some(self.parse_identifier());
}
在这种情况下,我不知道 Some
这个术语是什么 . 我试过查看the official Rust documentation但我找不到这些术语的描述,即使文档中使用了 Some
!
这些术语有什么作用?更普遍的是有一个Rust关键字列表?不寻找“生锈编程语言关键词”似乎有所帮助 .
2 回答
Rust的特色是Algebraic Data Types,简而言之就是具有多种可能形状的数据类型,例如:
是一种数据类型,它是
None
(单例值)或Some(i32)
(i32
) . 在这种情况下,None
和Some
是数据构造函数:当应用于某个值(或者在None
的情况下没有任何值)时,它们会生成OptionInt
类型的值 .这些数据构造函数也将出现在模式匹配中:
是一个表达式,它将生成一个
i32
,它是:0
如果an_option_int
包含None
或
6
如果an_option_int
包含Some(2)
此功能也称为标记联合 .
这些不是关键字,它们为枚举的变体命名 . Relevant section in the guide . 关键字列表is in the reference .