Rust基础
1.使用cargo创建项目
1).cargo new 项目名
2).cargo build编译原文件
3).cargo run 执行两步操作:编译+运行编译结果
当项目已经编译过并且未发生改变时,rust将直接执行之前编译后的二进制文件
4).cargo check比build块,可在开发过程中多次使用,提高开发速度
2.外部库(在rust中称为crate)
要安装外部crate,直接在Cargo.toml中的dependency中添加,等待插件自动拉取,或在下次编译时会拉取
Eg.
[dependencies]
rand = "0.7.3"
3.变量和可变性
变量:
rust使用let声明变量,声明变量时添加mut(mutable)关键字,标识该变量为可变变量,否则则为immutable,不可变变量。
修改不可变的变量将报错:cannot assign twice to immutable variable
常量:
1.使用const定义,常量不可变,不存在mut的概念,
2.且常量定义数据的类型必须标注
3.常量可以在任何作用域内声明
4.常量只可以绑定到常量表达式,无法绑定到函数的调用结果,或只能在运行时计算出的结果
5.命名规范,全部使用大写字母,单词间使用下划线标注。
shadow的概念,声明变量时可以多次声明,这样后声明的变量会shadow(隐藏)前面的变量,const声明的变量只能被定义一次。
4.数据类型
rust是静态语言,在编译时,必须要知道数据的类型。主要研究两个数据类型子集:标量和复合。
标量类型:标量类型表示单个值。
1.整数类型
没有小数部分,根据位数长度和符号标记,通常分为i8,i16,i32,i64,i128,u8...
2.浮点类型
带小数点的数字。Rust 的浮点类型是f32和f64,它们的大小分别为 32 位和 64 位。默认类型是f64 因为在现代 CPU 上,它的速度与f32大致相同,但精度更高。所有浮点类型都是有符号的。
3.布尔
true和false。布尔值的大小为一个字节。Rust 中的布尔类型使用bool
4.字符
Rust 的char类型是该语言最原始的字母类型
复合类型:可以将多个值组合成一种类型。Rust 有两种原始复合类型:元组和数组。
1.元组
元组是将多个具有多种类型的值组合成一个复合类型的通用方法。元组具有固定长度:一旦声明,它们的大小就不能增加或缩小。
fn main() {
let tup: (i32, f64, u8) = (500, 6.4, 1);
}
访问元组中的数据:
println!("tup one is {}" ,tup.0);
//元组可以结构
let (x,y,z) = tup;
println!("{x},{y},{z}")
2.数组
数组的每个元素都必须具有相同的类型。与某些其他语言中的数组不同,Rust 中的数组具有固定长度。
let arr:[i32;3] = [123,45,78];
println!("arr one is {}",arr[0]);
当访问超出数组末尾的数组元素,程序进入panic,阻止访问无效的内存,体现了rust的安全性。
5.函数
fn main() {
println!("this is main fn");
another_function(15,'g');
}
//函数使用snake_case命名法,必须使用小写单词间使用_分隔
//函数的参数,必须标明类型,多个参数间使用逗号分隔
fn another_function(x:i32,y:char){
println!("this is a defined fn----{x}---{y}")
}
语句和表达式:
1.语句是执行某些操作但不返回值的指令。
2.表达式计算结果值。
fn main() {
let y = {
let x = 3;
x + 1
};
println!("The value of y is: {y}");
该x + 1行末尾没有分号,这与您目前看到的大多数行不同。表达式不包括结束分号。如果你在表达式的末尾添加分号,你就把它变成了一个语句,然后它就不会返回值
}
6.控制流(循环)
if else
while
loop
for
let arr:[i32;5] =[1,25,48,59,41];
for e in arr.iter() {
println!("{e}");
}
本文由 yuin 创作,
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。