Skip to content

Instantly share code, notes, and snippets.

@tioover
Last active August 29, 2015 14:13
Show Gist options
  • Save tioover/ce3997f661f6910f0b20 to your computer and use it in GitHub Desktop.
Save tioover/ce3997f661f6910f0b20 to your computer and use it in GitHub Desktop.
// compile in rustc 1.0.0-nightly (44a287e6e 2015-01-08 17:03:40 -0800)
enum List<T> { // 泛型 T
Pair (T, Box<List<T>>), // Cons 对
Nil, // 表尾符号
}
fn main() {
use List::{Pair, Nil}; // 将 List 名字空间的符号导入到当前作用域。
let len: i32 = 42; // 长度为42,此变量不可变。
let mut list: Box<List<i32>> = Box::new(Nil); // 堆上(Box::new)创建一个表尾符号,赋给可变变量 list。
for i in range(0, len) {
list = Box::new(Pair (i, list)) // 更新 list,将新元素添加到 list 的头部。
}
loop { // 无限循环
list = match *list { // 模式匹配 *list,并将结果赋给 list。
Pair (car, cdr) => { // 如果 list 是一个二元组(序对),则取出两个部分。
println!("{}", car); // 输出前项
cdr // 返回后项,会被赋给 list。
},
Nil => break, // 直到 list 成为表尾符号,跳出循环结束程序
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment