1.特性
1.特性
变量改变值的时候必须保持类型一致,而shadowing机制可以改变类型(一个彻底的新变量覆盖之前的同名变量)
注释示例:
//单行注释
/*
多行注释1
多行注释2
*/
2.数据类型
rust共有四种标量类型:
- 整数
- 浮点数
- 布尔
- 字符
最后一种arch整数表示符合当前计算机架构的整数类型,一般是64位/32位整数,也分为有符号和无符号,可以理解为“万金油”整数
rust在调试模式(cargo build)下会尽职尽责检查数据溢出防止发生panic;
在发布模式下则不会检查数据溢出,当出现溢出时会进行“值的环绕”
运算操作支持加减乘除余
布尔类型符号为bool,取值有true/false,占用1个字节
因为char类型支持的字符比较多,所以占用内存是4字节
rust内置了两种复合数据类型,分别是元组和数组
元组Tuple:
- 支持存放不同类型
- 长度一旦确定不可更改
示例代码:
//定义一个元组并且显示声明元素类型
let tup:(i32,f64,char)=(12,50.4,'a');
//使用模式匹配解构元组获取元素
let (a,b,c)=tup;
//通过打点索引访问元素
println!("{},{},{}",tup.0,tup.1,tup.2);
数组Array:
- 只能存放相同类型
- 长度一旦确定不能更改
示例代码:
//定义一个数组并且显示声明类型和长度
let arr1:[i32;4]=[1,2,3,4];
//定义数组时指定默认值和长度(其实也隐式指定了类型)
let arr2=[3;4];
//使用索引访问元素
println!("{}",arr1[0]);

3.函数 小tips:
- 准确来讲,parameters是形参,arguments是实参,但是一般都叫作参数
- rust是基于语句的语言
- 表达式(a+b)会返回一个值,但是语句(a+b;)不会!
rust中函数参数必须指明类型!
示例代码: fn plus_five(x:i32) ->i32 { println!(“the value x is {}“,x); x+5 }

4.控制流
if分支示例代码:
if a>0
{
println!("a>0");
}
else if a<0
{
println!("a<0");
}
else
{
println!("a=0");
}
//if也是一个表达式,因此也会有结果,可以这样利用
let condition=true;
let number=if condition {1} else {2};
注意:
- if后面必须是bool类型,不能是其他类型,因为rust不会转换非布尔类型到布尔类型
- 第一个满足条件的arm会被执行
- else if 与else可选
match分支示例代码:
let x=5;
match x
{
1=>println!("one"),
3=>println!("three"),
5=>println!("five"),
_=>println!("other"),
}
//如果只看是否是某一种值,可以使用if let
if let Some(3)=x
{
println!("Some(3)");
}
else
{
println!("other");
}
注意:match的分支,要么穷举完所有的可能情况,要么列举一部分后加通配符分支
循环示例代码:
//loop持续循环,可使用break停止循环并且返回某一结果
let num1=0;
loop
{
num1+=1;
if num1==100
{
break num1*2;
}
}
//while条件循环
let num2=3;
while num2!=0
{
println!(num2);
num2=num2-1;
}
//for遍历循环
let arr=[1,2,3,4,5];
for element in arr.iter()
{
println!(element);
}