一、Rust简介
二、安装rust
再安装gcc 参考下面博客内容
https://blog.csdn.net/zhmh326/article/details/120881354
再继续自定义安装rust,参考博客
https://blog.csdn.net/zhmh326/article/details/120881354
修改参数options后如下,然后1继续安装这些组件
cargo是rust的包管理工具,类似于python的pip,默认的cargo会从国外网站下载包,也可以修改为从科大下载。在用户主目录的.cargo目录下新建一个文件,命名为config(没有扩展名),并输入以下内容:
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
安装clion ,创建工程,写一个hello world
点击run执行程序
三、使用Cargo
类似于java的maven工程 pom.xml
四、做一个猜数游戏Demo
use std::io;// preclude
fn main() {
println!("猜数!");
println!("猜测一个数!");
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("无法读取行");
// io::Result Ok,Err
println!("你猜测的数是:{}",guess)
}
rust语言默认不可变
如果想改,需要写成 let mut foo = 1;
生成神秘数字
cargo.toml增加rand依赖
运行cargo build 发现正在下载对应的依赖包
执行cargo update,可以更新到最新的依赖版本
默认升级到当前0.3下的最新版本0.3.23
手动改成0.7.0,然后执行cargo build,发现会下载最新的包
测试rust的类型转换例子
use std::io;// preclude
use rand::Rng;
use std::cmp::Ordering;
fn main() {
println!("猜数游戏!");
let secret_number = rand::thread_rng().gen_range(1..101);
println!("神秘数字是:{}",secret_number);
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("无法读取行");
let guess:u32 = guess.trim().parse().expect("invalid number");
println!("你猜测的数是:{}",guess);
// 使用match表达式
match guess.cmp(&secret_number) {
Ordering::Less => println!("too small!"),
Ordering::Equal => println!("equal"),
Ordering::Greater => println!("too big"),
}
}
}
多次猜测 使用loop循环
use std::io;// preclude
use rand::Rng;
use std::cmp::Ordering;
fn main() {
println!("猜数游戏!");
let secret_number = rand::thread_rng().gen_range(1..101);
println!("神秘数字是:{}",secret_number);
loop {
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("无法读取行");
let guess:u32 = match guess.trim().parse() {
Ok(num) => num,
Err(num) => continue,
};
println!("你猜测的数是:{}",guess);
// 使用match表达式
match guess.cmp(&secret_number) {
Ordering::Less => println!("too small!"),
Ordering::Greater => println!("too big"),
Ordering::Equal => {
println!("equal");
break;
}
}
}
}