商业网站服务,厦门广告公司排行榜,wordpress文章自动存在本地,wordpress 显示访客数主要是Rust语言圣经学习的小结#xff0c;供参考 基本概念
// Rust 程序入口函数#xff0c;跟其它语言一样#xff0c;都是 main#xff0c;该函数目前无返回值
fn main() {// 使用let来声明变量#xff0c;进行绑定#xff0c;a是不可变的// 此处没有指定a的类型… 主要是Rust语言圣经学习的小结供参考 基本概念
// Rust 程序入口函数跟其它语言一样都是 main该函数目前无返回值
fn main() {// 使用let来声明变量进行绑定a是不可变的// 此处没有指定a的类型编译器会默认根据a的值为a推断类型i32有符号32位整数// 语句的末尾必须以分号结尾let a 10;// 主动指定b的类型为i32let b: i32 20;// 这里有两点值得注意// 1. 可以在数值中带上类型:30i32表示数值是30类型是i32// 2. c是可变的mut是mutable的缩写let mut c 30i32;// 还能在数值和类型中间添加一个下划线让可读性更好let d 30_i32;// 跟其它语言一样可以使用一个函数的返回值来作为另一个函数的参数let e add(add(a, b), add(c, d));// println!是宏调用看起来像是函数但是它返回的是宏定义的代码块// 该函数将指定的格式化字符串输出到标准输出中(控制台)// {}是占位符在具体执行过程中会把e的值代入进来println!(( a b ) ( c d ) {}, e);
}// 定义一个函数输入两个i32类型的32位有符号整数返回它们的和
fn add(i: i32, j: i32) - i32 {// 返回相加值这里可以省略returni j
}变量可变性
其他大多数语言要么只支持声明可变的变量要么只支持声明不可变的变量Rust两者都要既要灵活又要安全。默认不可变让代码安全性能更好。通过mut让变量变为可变。常量与不可变变量常量用const修饰。
变量绑定
例如let a hello world变量绑定不同与其他语言的变量赋值是与Rust的内存管理方法相关的。绑定可有较复杂的形式如解构let (a, mut b):(bool, bool)(true,false);变量遮蔽一方面类似于CC或Python中的变量作用域另一方面不同类型的变量可以同名
基本类型
Rust一般能自动推导出变量类型因此可省略类型但能力有边界如let guess 42.parse().expect(Not a number!); 需要明确指定42.parse::i32 或 let guess: i32 ...字符、布尔、单元类型。单元是()这是main()、println!()等函数的返回值。
语句与表达式
Rust语言区分语句与表达式。表达式不能含分号表达式一旦加上分号就会变成语句不会返回值。
fn add_with_extra(x: i32, y: i32) - i32 {let x x 1; // 语句let y y 5; // 语句x y // 表达式
}函数
Rust是强类型语言每个函数参数都要明确标出具体类型。 函数可使用表达式或return作为返回值。 特殊函数返回的函数永不返回发散函数
fn forever() - ! {loop {//...};
}所有权
计算机语言内存管理的三种方式自动回收、手动管理、所有权管理。 我粗略地理解Rust语言将基本数据类型及其组合放在栈上管理不存在所有权转移执行浅拷贝这样的变量称为有Copy的特征“一个旧的变量在被赋值给其他变量后仍然可用”而对于堆上的变量则有所有权规则对于堆上的变量Rust语言的绑定右值类似于Python的浅拷贝同时使得左值失效又有移动的内涵。