一 安装
-
命令行安装 curl –proto ‘=https’ –tlsv1.2 https://sh.rustup.rs -sSf | sh
-
查看版本 rustc —version
-
更新 rustup update
-
卸载 rustup self uninstall
二 Hello World
-
xxx.rs rs文件是rust的文件格式, linux/macos 下 可执行文件是 xxx , windows是xxx.exe
-
fn main() {}
程序入口函数 -
println!(“Hello world”);
println! 是rust的宏命令 ; 表示此代码结束 -
编译
rustc xxx.rs
三 Cargo
cargo是rust编译和包管理工具, 安装rust时已安装cargo
-
查看 cargo版本: cargo —version
-
cargo 新建项目: cargo new 项目名
-
cargo新建项目时,初始化里一个新的git仓库包含.git和.gitignore文件。 如果不需要git 使用 cargo new —vcs=none xxx
- cargo.toml文件是项目的全局配置文件
1 2 3
[package] 标头配置了工程的基本信息 [dependencies] 会指明项目所有的依赖包
-
cargo build 编译项目,并生成可执行文件
-
cargo run 运行项目。 如果没有编译,会先编译再运行
- cargo check 快速检查代码以确保能通过编译, 但他不会编译生成可执行文件。 cargo check要比cargo bulid快更多。
四 小项目 guessing game
-
use std::io;
使用标准库里的io包。 use声明 std是标准库 io是标准库里的控制输入输出的包use rand::Rng;
使用第三方包, Rng(a, b)函数生成[a, b)范围内的整数随机数, 左闭右开use std::cmp::Ordering;
letmut geuss = String::new();
let 声明声明一个 mut 可变变量 guess , 将一个空字符赋值给guess。let foo = 5;
rust的变量默认是不可变的, 可变用 mut声明-
io:: std().read_line(&mut guess).expect(“Falied to read line”);
- 循环体
1 2 3 4
loop{ continue; break; }
- 将guess变量的类型由String转为u32 无符号的32位整形
1 2 3 4
let guess: u32 = match guess.trim().parse( Ok(num) => num, Err(_) => continue, );
- 比较两个数的大小
1 2 3 4 5 6 7
match guess.cmp(&secret_number) { Ordering::Less => println!("Too Small"), Ordering::Greater => println!("Too big"), Ordering::Equal => { println!("You win, the secret number is {}", secret_number); } }
五 Cargo 国内镜像源配置
-
open /Users/rpl/.cargo
-
vim config:
1 2 3 4 5 6
[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"