理解 Rust 的 None 和 Some(T)
Rust 语言没有 NULL, None, null, nil 这些表示“无”的值,那么 Rust 怎么表示和处理“无”呢? 在比较对象的时候,需要先校验两个对象的是否存在。例如下面的 Python 语句 def inorder(p, q): if p is None and q is None: return true if p is None or q is None: return False if not inorder(p.left, q.left): return False if p.val != q.val: return False if not inorder(p.right, q.right): return False 这是一段用于检查两棵二叉树是否一致的算法,为了能够顺利执行后面三行代码,必须要先检查p 和 q 是否为“无”。 Rust 给了另一个稍微不同的思考切入点。 Rust 的答卷 在 Rust 中,有一种枚举类叫做Option<T>。它的定义如下 enum Option<T> { Some(T), None, } 熟悉泛型的同学不用我多做介绍 T 是什么了。不熟悉的同学, T 是 Template 的缩写,可以被替换成 任何类型。Option<T> 有两个成员,Some(T) 和 None。Some(T) 表示“有值”,None 表示“无值”。 通过后面的阐述,你会更加清楚 T 的作用。...