Rust简明教程第一章-easy rust

观看B站软件工艺师杨旭的rust教程学习记录,有删减有补充

hello word

文件按名为main.rs,main是函数入口,rust默认推断为void main,!代表println是一个宏,函数没有

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

编译(仅适合小项目,一般用Cargo)

rustc main.rs

执行

#win
.\main.exe
#Linux
./main

Cargo

查看cargo版本cargo --version

创建rust项目

cargo new hello_rust

运行项目

cargo run

检查代码但不生成可执行文件,速度比构建快,能干过编译器就是好代码

cargo check

构建项目,生成的可执行文件在/target/debug/build

cargo build

为发布构建,编译时进行优化但编译时间更长,生成的可执行文件在/target/release/build

cargo build --release

详细命令

自定义发布配置

cargo build:采用dev配置

cargo build --release:采用release配置

在Cargo.toml中添加profile可以覆盖配置

[prifile.dev]
opt-level = 0   	#开发时使用最低优化级别
[profile.release]
opt-level = 3   	#发布时使用最高优化级别

生成更小的可执行文件

[profile.release]
opt-level = "z"       # 优化代码尺寸
lto = true            # 启用链接时优化
codegen-units = 1     # 降低代码生成单元数,增加优化时间但减少二进制大小
strip = "debuginfo"   # 移除调试信息

生成更快的可执行文件

[profile.release]
opt-level = 3         # 最大程度优化代码速度
lto = "fat"           # 启用最大程度的链接时优化
codegen-units = 1     # 降低代码生成单元数,增加优化时间但提升性能

其他配置

Rust依赖库

https://crates.io/
Cargo.toml添加需要的库,^代表与指定版本兼容的版本,如

[dependencies]
rand = "^0.8.5"

更新cargo.lock版本

cargo update

猜数游戏

use rand::Rng;
use std::cmp::Ordering;
use std::io; //trait
fn main() {
   
    println!("猜数!");
    //生成1~100的随机数
    let secret_number = rand::thread_rng().gen_range(1..101);
    println!("神秘数值是{}", secret_number);
    loop {
   
        println!("猜一个数");
        let mut guess = String::new();
        //等价于std::io
        io::stdin().read_line(&mut guess).expect("无法读取行");
        //去掉两边的空白并转换为整数,变量遮蔽shadow,match处理错误
        let guess: u32 = match guess.trim().parse() {
   
            Ok(num) => num,     //成功就返回num
            Err(_) => continue, //_代表不关心它的值是什么
        };
        println!("你猜的数字是:{}", guess);

        match guess.cmp(&secret_number) {
   
            Ordering::Less => println!("太小"),
            Ordering::Greater => println!("太大"),
            Ordering::Equal => {
   
                println!("猜对了");
                break;
            }
        }
    }
}

变量与可变性

  • 使用let声明变量
  • 变量赋值在Rust中被称为变量绑定
  • 变量默认是不可变的
  • 使用mut关键字使变量可变
fn main() {
   
    let a = 5;
    let mut b = 4;
    b = 6;
    println!("a:{},b:{}", a, b);//a:5,b:6
}

变量与常量

常量声明后不可变

  • 常量使用const关键字声明,它的类型必须标注
  • 不可以使用mut,常量永远不可变
  • 常量可以在任何作用域声明,包括全局作用域
  • 常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时计算出的值

命名规范:Rust常量使用全大写字母,每个单词之间使用_分开,如MAX_VALUE

const MAX_VALUE: u32 = 1_000;
fn main() {
   
    const MIN_VALUE: u32 = 1_000;
    println!("最大值:{}\n最小值{}"

你可能感兴趣的:(后端,rust,开发语言,后端)