Rust语言介绍和猜数字游戏的实现

打印 上一主题 下一主题

主题 975|帖子 975|积分 2925

Rust语言介绍和猜数字游戏的实现

Rust语言是一种体系编程语言,焦点夸大安全性、并发性以及高性能,由类似于C/C++的底层控制能力,性能也非常接近,Rust有一些特性

  • 所有权体系,这个可以自动管理内存,无需垃圾回收器,保证数据的安全
  • 零成本抽象,高层抽象不会带来运行时的开销,运行时的效率会很高
  • 线程安全,在编译阶段就能防止数据竞争的问题
  • 强类型语言,类型转换非常严酷,提升代码的可靠性
  • cargo管理工具非常好用,简化项目的管理和依赖管理
cargo是什么

cargo是rust的官方管理构建工具,一来可以创建项目、构建项目、运行项目,二来可以管理整个项目依赖的第三方库,cargo根本上涵盖了所有的第三方库,可以在www.crate.io中查看
一些常用的方法如下
  1. cargo new project_name # 创建rust项目
  2. cargo build # 构建项目生成可执行文件
  3. cargo run # 构建并允许项目
  4. cargo add lib_name # 添加最新版本依赖
  5. cargo remove lib_name # 删除依赖
  6. cargo update [lib_name] # 更新依赖 不指定的话是更新所有依赖
  7. cargo --help
复制代码

  • 新创建的rust项目中会包罗项目设置文件,包罗项目名称、项目版本、第三方库的信息

    • 创建项目可以在下令后指定项目类型cargo new project_name --bin(--lib)
    • 默以为bin
    • 分别为二进制项目和库项目
    • 也就是说可以指定我写的项目是可实行文件,必须有main.rs和main函数作为步伐入口
    • 库项目紧张是用于封装逻辑,供其他步伐调用,第三方库也都是库项目

  • cargo run 可以指定debug模式大概release模式分别使用--debug,--release 默以为debug
  • 可以指定版本,比方cargo add rand@0.7

    • 也可以直接在设置文件中添加rand = "0.7"

使用Rust编写猜数字

这里我们先不具体介绍规则,只是大概了解一下

  • Rust的库管理是通过Crate(包)举行管理的,紧张分为第三方库和本地库
  • 在Rust中是区分函数和宏的,使用宏时需要加!
  • fn 表示函数
  • 1..101是表示范围的形式,等价于1 <= num && num < 101

    • 如果是闭区间则是1..=100

  • loop表示死循环,等价于while(true)
  • 在使用模块时需要指定,类似于C++的作用域
  • 声明变量时使用let

    • 可以不指定类型,比方let rand_num会自动补全类型
    • 偶尔需要指定类型,比方let guess: u32 = 大概let mut guess: String =
    • 虽然可以不指定类型,但是Rust是一个强类型的语言
    • mut指的是一个变量是否可以改变,类似于C++中的const但是是相反的作用
    • 也就是说Rust的变量默认是不可被重新赋值的,只有被设定为mut才可以

  • match 表示的是模式匹配,可以理解为一个高级的switch语句

    • 根本语法是 match value {} (value是要匹配的值)
    • 然后此中的每一项表示对应的返回值大概语句
    • 可以使用{}来写多个语句
    • _表示default

  • Rust在大概失败的方法中会返回一个Result类型,紧张是用于错误处理

    • 需要在返回值中使用.expect("")举行处理
    • 大概使用match分别对乐成和失败举行处理

  1. use rand::Rng; // 引入第三方库
  2. use std::{cmp::Ordering, io};
  3. // 主函数
  4. fn main() {
  5.     println!("Guess Num");
  6.     let rand_num = rand::rng().random_range(1..101); // 生成一个1到100的随机数
  7.     println!("random num is {}", rand_num);
  8.     loop {
  9.         println!("Please Input Your Guess:");
  10.         let mut guess: String = String::new();
  11.         io::stdin()
  12.             .read_line(&mut guess)
  13.             .expect("Failed to read line");
  14.         let guess: u32 = match guess.trim().parse() {
  15.             Ok(num) => num,
  16.             Err(_) => {
  17.                 println!("Place input a NUM!");
  18.                 continue;
  19.             }
  20.         };
  21.         println!("You Guessed {}", guess);
  22.         match guess.cmp(&rand_num) {
  23.             Ordering::Less => println!("Too Small"),
  24.             Ordering::Greater => println!("Too Big"),
  25.             Ordering::Equal => {
  26.                 println!("You Win!");
  27.                 break;
  28.             }
  29.         }
  30.     }
  31. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表