跳到主要内容

1.2-通用概念

Create by fall on 19 May 2024 Recently revised in 19 May 2024

Rust

变量与可变性

使用 let 声明变量,且变量默认不可变(不能被重新赋值)

使用 const 声明常亮,并且常量不可以使用 mut 且类型必须标注

fn main(){
let variable_uneditable = 12;
let mut variable1 = 22;
const MAX_POINT:u32 = 2_110;
}

元组

元组的声明和使用(长度固定,类型可以不同

let tup_arr: (i32, f64, f32) = (500, 10.0, 25.2);
let (x, y, z) = tup_arr;
println!("{},{},{}", tup_arr.1, tup_arr.0, tup_arr.2);
println!("{},{},{}", x, y, z)

数组

长度一定,类型相同(数据存放在 stack(栈)内存中,可以使用数组)

数组的声明和使用

let arr: [&str; 7] = [
"Monday",
"Tuesday",
"Wednesday",
"Tuesday",
"Friday",
"Saturday",
"Sunday",
];
let mon:&str = arr[0];
println!("{}",mon);

数据标注

数据类型:标量和复合类型

标量类型

  • 整数类型:u32(无符号整型,占据 32位(u:unsigned),i32(证书类型 signed)(isizeusize:根据电脑架构是 32 还是 64 而改变)
  • 浮点类型:f32(单精度,32 位)、f64(双精度,64 位)
  • 布尔类型:bool
  • 字符类型:char(占用 4 个字节,可以表示中文,emoji 等

不同进制的表示方式

// 十进制
let num_1 = 98_77;
// 十六进制
let num_2 = 0xfc;
// 八进制
let num_3 = 0o77;
// 二进制
let num_4 = 0b110_100;
// Byte u8 单个字符数字
let num_5 = b'A';
// 并且都可以使用类型作为后缀
let num_1 = 98_77u8;

类型的计算

let sum = 5 + 10;

let difference = 10.4 - 5.2;

let product = 4 * 24;

let quotient = 463 / 14.1;

let reminder = 54 % 3;

函数

声明函数

fn main() {
let arr: [&str; 7] = [
"Monday",
"Tuesday",
"Wednesday",
"Tuesday",
"Friday",
"Saturday",
"Sunday",
];
let mon: &str = arr[0];
// 不添加 ; 号,会表示默认返回该内容
let new_num = fun_foo(mon);
println!("一起搞点事吧,{}", new_num);
}

fn fun_foo(x: &str) -> &str {
println!("一起搞点事吧,{}", x);
// 不添加 ; 号,会表示默认返回该内容
"管道工"
}

控制流

块表达式,会把最后一个表达式作为返回值

let pink = {
let pukk: u32 = 64;
pukk - 44 // 如果添加 ; 表示没有返回值,即是一个 空的 ()

};
println!("一起搞点事吧,{}", pink);

ifelse ifelse

let state = false;
let star = if state { 4 } else { 5 };

let state = true;
let star = if state { 4 } else { 5 };

if star == 5 {
println!("star is 5");
} else if star == 4 {
println!("star is 4");
} else {
println!("star is not 4 or 5");
}

loopwhilefor

let mut star: u32 = { 4 };
let mut arr: [u32; 5] = [0, 1, 5, 6, 7];

loop {
print!("star is {}\n", star);
if star % 10 == 1 {
break;
} else {
star += 1
}
}
let mut index = 0;
while index < 5{
println!("current index:{},value:{}",index,arr[index]);
}
// for 循环不用判断,直接向下执行,所以速度更快,并且不容易因为 index 超出数组大小导致出错
for element in arr.iter(){
println!("current value:{}", element);
}
// range
for element in (0..4).rev(){
println!("current value:{}" element);
}

注释

参考文章

作者文章名称
软件工艺师https://www.bilibili.com/video/BV1hp4y1k7SV