Rust Guessing Game

简介

rust官方示例,猜猜看游戏 guessing_game 的小程序。从中我们可以感性认识到:

  1. extern crates 外部包装箱
  2. use crates 标准包装箱 和 包装箱
  3. fn func(),.method() 函数,方法,关联函数
  4. let,mut,:u32 等用于绑定的关键字
  5. loop 循环
  6. enum 枚举
  7. match 条件判断
  8. expect() 异常处理
  9. {} 在println中使用的占位符
  10. 以及一些有趣的 method 方法和关联函数
  • 包装箱crates 类似其他语言中的 库library 或者 包package
  • 绑定bindings 类似其他语言中的 变量variable

阅读源码之前

如果你未了解如何使用Cargo构建和运行你的程序,或者不知道如何依赖外部包装箱。
请参阅下面的文章:rust cargo使用

源码

做了些注释便于阅读,如有不当之处,请耐心指出,谢谢!

extern crate rand;      // 类似于use rand; (需在Cargo.toml中添加此外部依赖) use std::io;            // 使用std库的io库, 类似于namespace
use std::cmp::Ordering;
use rand::Rng;          // rand的位置 称为 特性traits域fn main()               // 输入是空元组
{println!("Guess the number!");/* gen_range() 包含下限但不包含上限 */let secret_number = rand::thread_rng().gen_range(1, 101);
//  println!("The secret number is: {}", secret_number);loop {println!("Please input your number:");/*let     创建新'绑定'                         '绑定'在其他语言中称为'变量 variable''绑定'默认是不可变的'immutable'      在c中称为'const'的mut     让'绑定'可变。'mutable'----let foo = bar;      // immutablelet mut foo = bar;  // mutable*//*String  字符串type,由std库提供  String是可增长的,UTF-8文本::      是type的“关联函数”       即::new()和String关联,而非String的实例.一些语言管这叫一个“静态方法”(而 . 是实例的方法)new()   函数,创建一个空的type。 很多其他type上都能找到 new() 函数*/let mut guess = String::new();/*io::stdin() 如果文件开头不写 use std::io, 则这里需要写std::io::stdin(),stdin()     返回一个指向终端标准输入的句柄read_line() stdin()的方法,一个type的特定实例(这里的实例是stdin())上可用( :: 是类型的关联函数)&mut guess  &为引用,引用默认是不可变的'immutable'。而read_line()只接收&mut String类型.expect("Failed to read line");read_line()的返回值 io::Result,有个expect()的方法*/io::stdin().read_line(&mut guess).expect("Fail to readline");/*let guess: u32  Rust 允许我们用新值 遮盖shadow 之前的变量Shadowing 让我们重用 guess 名字,而不是强迫我们想出两个独特名字guess.trim().parse()trim()          method, 会去掉字符串开头和结尾的任何空格parse()         method, 将字符串解析为'一些类型'的数字而这个 一些类型 由之前 let guess: u32,而被认为是u32类型parse()         返回值有Ok和Err两种enum*///  let guess: u32 = guess.trim().parse().expect("Please type a number!");let guess: u32 = match guess.trim().parse(){Ok(num) => num,Err(_)  => continue,};/*{}          占位符*/println!("your guessd: {}", guess);/*cmp() 可以在任何能被比较的值上调用,并且它获取你想要比较的值的引用cmp() 返回一个 Ordering 类型Ordering 是一个 枚举enum,类似于:enum Ordering{Less,Greater,Equal,};用 :: 来表明一个特定 enum 变量的命名空间*/match guess.cmp(&secret_number){Ordering::Less      =>  println!("Too small!"),Ordering::Greater   =>  println!("Too big!"),Ordering::Equal     => {println!("You win!"); break;}}//match}// loop}//end of main()

源码下载

下载地址

参考

  • The Rust Programming Language
  • Rust 程序设计语言(第一版) 简体中文版

rust guessing game相关推荐

  1. Rust 官方入门程序(a Guessing Game)解读

    Rust 入门程序解读 概述 代码 概述 本篇博客是对 Rust 官方提供的 a Guessing Game 的代码解读,所有的解读都以注释的形式出现在代码块中,让读者可以了解基本的关键字用法与程序语 ...

  2. Rust:剑指C++

    Rust:极富活力和前途的编程语言,剑指C++ 今天开始学习Rust,马上要回去休息了,只贴上一段实例代码,在后续的学习中,会对这种语言进行一个详尽的介绍(学习中....). extern crate ...

  3. Node.js 开发者的 Rust 入门指南

    作者 | Florian GOTO 译者 | 弯月    责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 随着WebAssembly的进步,如果你想在JavaScrip ...

  4. 为什么我说Rust是靠谱的编程语言

    为什么我说Rust是靠谱的编程语言 作者:Liigo(庄晓立) 时间:2015年5月16日 原创链接:http://blog.csdn.net/liigo/article/details/457571 ...

  5. Rust和C / C ++的跨语言链接时间优化LTO

    Rust和C / C ++的跨语言链接时间优化LTO 链接时间优化(LTO)是LLVM实施整个程序优化的方法.跨语言LTO是Rust编译器中的一项新功能,使LLVM的链接时间优化可以在混合的C / C ...

  6. 10玩rust_有趣的 Rust 类型系统: Trait

    也许你已经学习了标准库提供的 String 类型,这是一个 UTF-8 编码的可增长字符串.该类型的结构为: pub struct String {vec: Vec<u8>, } UTF- ...

  7. rust熔炉怎么带走_Rust游戏中12个实用小技巧,包含无伤下坠、直梯爬楼

    Rust是一款第一人称生存网络游戏,有点像野外求生,但这款游戏内容则更加丰富.刺激.血腥. 在这款游戏中玩家的第一任务就是活下来,而想要活下来你将要接受饥饿.干渴.寒冷等.游戏中玩家需要建造自己的庇护 ...

  8. 腐蚀rust电脑分辨率调多少_腐蚀Rust怎么设置画面 腐蚀Rust提高帧数画面设置方法...

    腐蚀Rust这个游戏的细节取决于图像质量也就是我们进入游戏的时候可以选择画质,这里为大家带来腐蚀Rust画质设置教程. 图像质量 1~3为一个大档 4~5是一个大档 4以上你在游戏里面的画面会显示更多 ...

  9. rust 官服指令_RUST 命令大全(包括服务器指令)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 RUST++ MOD (以下在聊天框内输入) 基本命令 /share playername [shares your doors with a playe ...

最新文章

  1. VC++读取图像RGB值
  2. 按键控制LED实现启动、停止按钮
  3. c++计算eigen随笔(10)-数组、矩阵、向量(3)
  4. 我的职业规划,大家给点意见吧!
  5. java JVM剖析
  6. JSONObject简单测试使用
  7. 绝佳的录屏编辑神器,一款走遍天下
  8. linux下编译libyuv,Android ndk cmake编译libyuv
  9. ESB(企业服务总线)知识
  10. excel表格,如何按编号换行
  11. 7-23 币值转换(20 分)
  12. LPDDR4x 的 学习总结(1) - 存储体的浅识
  13. protues仿真中12864液晶屏串行编程的感想(从实际硬件驱动芯片 ST7565R到仿真硬件驱动芯片SED1565)
  14. 欧尼酱讲JVM(20)——了解垃圾回收
  15. Matlab实现经典功率谱分析和估计
  16. CIBERSORT计算免疫细胞丰度
  17. oracle sql sub,oracle数据库根据不同条件给同一字段修改相应的值
  18. php页面如何加入滚动广告,前端页面内实现左右摇摆广告
  19. 什么耳机戴着舒服不伤耳朵,五款佩戴最舒服的骨传导耳机推荐
  20. 织梦DEDECMS做的网址导航 站长导航 http://www.97644.com

热门文章

  1. Log4j2配置日志写入本地文件出错
  2. ios 计算代码耗时
  3. HttpClient 调用耗时长服务问题记录和处理方案
  4. Qt: multiple definition of XXX
  5. windows和linux系统文件目录
  6. 1.关于tomcat的startup.bat文件闪退,而日志文件没有任何信息
  7. ps一键去除gif背景的jsx脚本
  8. 关于field-of-view和receptive field
  9. 学数据结构,是不是一定要先学离散数学
  10. 免单拼团商城小程序开发