Hello,Rust

Rust是一门内存安全同时有着不输于C++性能的系统编程语言。粗略地总结一下今天学习的内容。

环境安装

在Rust官方网站下载rustup后根据提示完成安装即可。

Hello, wold

我们在记事本中写入如下代码:

fn main() {
    println!("Hello, world!");
}

\quadfn用来声明一个新函数,空格后面跟着的为函数名,()内为函数参数,其中main函数为程序入口。函数体用{}包围。
\quad函数体中,println! 调用的是一个宏(marco)而不是函数,如果是函数则没有!。
\quad把文件保存为 .rs格式后,打开cmd或PowerShell,进入该文件所在目录,执行rustc xxx.rs命令进行编译,然后再执行 ./xxx来运行该程序。

Cargo

\quadCargo是 Rust的构建系统和包管理器。请尽量使用Cargo来管理Rust项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做依赖(dependencies))。
\quad在projects目录下,执行cargo new hello命令,新建名为hello的目录,进入hello目录并列出文件,将会看到Cargo生成了两个文件和一个目录:一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。它也在hello目录初始化了一个 git 仓库,以及一个 .gitignore 文件。
\quad执行cargo build命令,会对该项目进行编译。
\quad执行cargo run命令,会对该项目编译并运行。
\quadCargo还提供了一个叫cargo check的命令。该命令快速检查代码确保其可以编译,但并不产生可执行文件。

猜数字

官方文档提供的第二个示例。

use std::io; //提供标准输入的库
use std::cmp::Ordering; //提供cmp方法和Ordering类型
use rand::Rng; //Rng是一个trait,暂时不懂,它提供随机数生成器应实现的方法
fn main() {
	println!("猜猜看!");
	let secret_num = rand::thread_rng().gen_range(1, 101);
	println!("The secret num is {}", secret_num);
	
	loop {
		println!("请输入你的猜测");
		
		let mut guess = String::new();
		io::stdin().read_line(&mut guess).expect("Failed to read line");
		let guess: u32 = match guess.trim().parse() {
			Ok(num) => num,
			Err(_) => continue,
		};
		println!("You guessed: {}", guess);
		
		match guess.cmp(&secret_num) {
			Ordering::Less => println!("猜小了"),
			Ordering::Greater => println!("猜大了"),
			Ordering::Equal => {
				println!("猜对了!");
				break;
			}
		}
	}
}

use:引入到当前作用域,类似C++的using
std::io:std是标准库,io库来自std库,双冒号语法类似C++
let:用于创建变量,在rust中变量默认是不可变的(这确实惊到我了)
let mut:创建可变的变量
println!("{}", var):里面的花括号是占位符,后面是参数列表
loop:创建一个无限循环
String::new():String是一个类型,new()是它的关联函数,不依赖于实例对象,用于创建对象
match:条件分支
&mut guess:引用变量guess,因为要读取输入的内容到guess里所以要加mut

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章