2.Rust编程初体验

本入门系列教程将不会按照常规的方式进行,本教程主要以代码入手,先敲代码,再讲知识点。所谓,先“知其然”,再“知其所以然”,欢迎共同探讨,多多指正。

下面先以两个简单的程序对Rust语言有一个初步的体验。

Code 1. Hello World
fn main(){
	println!("Hello, world!");
}

运行输出:Hello, world!

和C++类似,程序的入口需要一个主函数fn main,且语句结束后需要一个分号

Code 2. 猜数字游戏

这是Rust官方教程中的一个程序。

程序的目的是猜数字,如果猜的不对会提示大了还是小了,如果猜对了,则游戏胜利,下面是一个初步实现

extern crate rand;	//导入rand包用于生成随机数
use std::io;
use rand::Rng;
use std::cmp::Ordering;

fn main() {
    println!("Guess the number!");
    let secret_num = rand::thread_rng().gen_range(1, 101);  //生成随机的secret_number
    println!("Please input your guess.");
    let mut guess = String::new();
    io::stdin().read_line(&mut guess).expect("failed to read the line!");
    let guess : u32 = guess.trim().parse().expect("please input a number!");	//将输入数据类型从String转换成u32
    //匹配数据
    match guess.cmp(&secret_num) {
        Ordering::Less => println!("too small!"),
        Ordering::Greater => println!("too big!"),
        Ordering::Equal => println!("You Win!"),
    }
}

上面的程序初步实现了猜数字游戏的功能,首先需要生成一个供我们猜测的随机数,生成随机数需要用到外部包rand,这时需要在文件Cargo.toml中的dependencies部分添加rand

此时编译后,cargo就会自动帮我们下载并编译包依赖。

我们需要一个变量所为我们的输入,跟c++一样,需要标准io:std::io。大家可以注意到有一个mut关键字,mut表示变量,至于为什么需要mut,我们下期将数据类型时将会讲到。

然后就需要将输入的String类型的数据转换成u32,这样才能够进行比较,不同类型之间不能进行比较,类型安全。

通过标准库中的std::cmp::Ordering进行比较

这样我们的程序就能够进行一次猜数字游戏了

显然我们并不是轻言放弃的人,不猜对显然是不会睡觉的!

那么我们就需要引入循环,来反复试错

//猜数字程序
//2019.10.23

extern crate rand;
use std::io;
use rand::Rng;
use std::cmp::Ordering;

fn main() {
    println!("Guess the Number!");
    let secret_num = rand::thread_rng().gen_range(1, 101);  //生成随机的secret_number
    loop{
        println!("Please input ur guess!");
        let mut guess = String::new();  //mut变量
        io::stdin().read_line(&mut guess).expect("failed to read the line!");
        let guess:u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };
        println!("ur guess : {}", guess);
        match guess.cmp(&secret_num) {
            Ordering::Less => println!("too small!"),
            Ordering::Greater => println!("too big!"),
            Ordering::Equal => {
                println!("You Win!");
                break;
            }
        }
    }
}

上面程序相信大家能够很轻松的意会,loop就是一个死循环,当猜对的时候,break跳出循环,游戏结束。

下面我就来玩一下我们用Rust编写出的第一个游戏吧!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSDKBYah-1585816462809)(image-20200316223520260.png)]

我很顺利就完成游戏啦!非常滴牛逼!

环,游戏结束。

下面我就来玩一下我们用Rust编写出的第一个游戏吧!

[外链图片转存中...(img-TSDKBYah-1585816462809)]

我很顺利就完成游戏啦!非常滴牛逼!

下期我们将会开始介绍Rust的数据类型,敬请期待!

发布了27 篇原创文章 · 获赞 70 · 访问量 9375

猜你喜欢

转载自blog.csdn.net/qq_23905237/article/details/105273195