做美容美发学校网站公司,泉州丰泽建设局网站,公司erp系统,做古玩的网站目录 一、变量与常量1.1 变量1.2 常量 二、遮蔽三、数据类型3.1 标量类型1. 整型2. 浮点型3. 布尔类型4.字符类型 3.2 复合类型1. 元组2. 数组 四、函数五、语句和表达式六、函数的返回值 一、变量与常量
1.1 变量 在Rust中默认的变量是不可变的#xff0c;如果修改其值会导致… 目录 一、变量与常量1.1 变量1.2 常量 二、遮蔽三、数据类型3.1 标量类型1. 整型2. 浮点型3. 布尔类型4.字符类型 3.2 复合类型1. 元组2. 数组 四、函数五、语句和表达式六、函数的返回值 一、变量与常量
1.1 变量 在Rust中默认的变量是不可变的如果修改其值会导致错误。
fn main(){let x 3;x 5; //error[E0384]: cannot assign twice to immutable variable x
}定义变量时添加mut关键字就能解决以上问题例如let mut x 3
1.2 常量
常量必须使用const定义且类型必须被标注。常量可以在任何作用域内进行声明包括全局作用域。常量只可以绑定到常量表达式常量使用全大写字母每个单词之间用下划线分隔数字可以用_分隔以增加可读性
const MAX_POINTS:u32 100_000;二、遮蔽
在Rust中可以定义不同类型/相同类型的相同变量而不会报错例如
fn main(){let x 3;let x x 5; //同为i32类型的xlet x String::from(Hello); //将x设置为String类型println!({}, x);
}三、数据类型 Rust是一门静态类型语言在编译期内就必须知道变量的类型因此将一个字符型的整数转换成真正的整数型时就必须显式的定义类型。
fn main(){let x 42.parse().expect(Not a number); //let x:u32 42.parse().expect(Not a number); 这是正确的println!({}, x);
}通过下面的报错信息可以很明显的知道应该如何修改源码
3.1 标量类型 Rust有四种基本的标量类型整型、浮点型、布尔型以及字符型
1. 整型 下表展示的Rust语言中的整型后面的数字代表了所示用的位数isize 和 usize 类型取决于程序运行的计算机体系结构。
长度有符号类型无符号类型8 位i8u816 位i16u1632 位i32u3264 位i64u64128位i128u128archisizeusize
也可以按照下表中所示的任意形式来表示整型的字面量
数字字面量示例十进制98_222十六进制0xff八进制0o77二进制0b1111_0000字节 (仅限于 u8)b’A’ 整型溢出的问题 u8可以存放0~255的值如果存放256则会发生整型溢出在调试模式debug下编译Rust会检查溢出在发布模式release下构建时Rust对于溢出的处理时采用取余的方式循环。比如在 u8 的情况下256 变成 0257 变成 1。 要显式处理溢出的可能性可以使用标准库针对原始数字类型提供的以下一系列方法
使用 wrapping_* 方法在所有模式下进行循环例如 wrapping_add如果使用 checked_* 方法时发生溢出则返回 None 值使用overflowing_*方法返回该值和一个指示是否存在溢出的布尔值使用 saturating_* 方法使值达到最小值或最大值
2. 浮点型 在 Rust 中浮点型数字也有两种基本是 f32 和 f64它们的大小分别为 32 位和 64 位。默认浮点类型是 f64浮点型都是有符号的。
fn main(){let x 83.1; //f64let y:f32 83.1; //f32
}3. 布尔类型 Rust 中的布尔类型有两个可能的值true 和 false。布尔值的大小为 1 个字节。Rust 中的布尔类型可以使用 bool进行显式的声明。
fn main() {let t true;let f: bool false; // 显式声明为布尔型
}4.字符类型 字符类型字面量用单引号引起来Rust 的字符类型大小为 4 个字节表示的是一个 Unicode 标量值这意味着它可以表示的远远不止是 ASCII。标音字母中文/日文/韩文的文字emoji还有零宽空格(zero width space)在 Rust 中都是合法的字符类型。
fn main() {let c z;let z ℤ;let heart_eyed_cat ;
}3.2 复合类型 Rust有两种复合类型元组tuple和数组array。
1. 元组 将多种类型的多个值组合到一个复合类型中的一种基本方式元组的长度是固定的。
fn main(){let tup (500, 30.1, China); //默认的类型创建元组let tup2:(i64, f32, bool) (35, 34.1, true); //显式创建元组let (x, y, z) tup2; //将tup2中的三个值分别赋给x,y,zprintln!({} {} {}, x, y, z); //访问tup2的方式1println!({} {} {}, tup2.0, tup2.1, tup2.2) //访问tup2的方式1
}2. 数组
数组的每个元素的元素类型必须相同且数据的长度固定。
fn main(){let a [1, 2, 3, 4, 5]; //定义默认i32的5个元素的数组组内元素为1~5let b: [i64; 5] [1, 2, 3, 4, 5]; //定义i64型的5个元素的数组组内元素为1~5let c [3; 5]; //长度为5元组全为3即相当于[3, 3, 3, 3, 3]for item in c{println!(item {}, item) //循环输出c内的元素}println!(a[0] {}, a[0]); //单个访问
}四、函数
Rust的函数以fn关键字开头函数和变量名中所有字母都是小写并使用下划线分隔单词函数参数必须指明类型。
fn another_function(x: i32, source: str){println!(x {}, source {}, x, source);
}fn main(){another_function(32, China);
}五、语句和表达式
函数的函数体由一系列语句组成也可以表达式结尾。语句是执行一些操作但不返回值的指令。表达式expression计算并产生一个值。
fn main(){// let x (let y 6); //语句不返回值因此bool得不到初始值let x {let y 6;y 1 //不能加分号结尾加分号后就成了语句}; //{}整体是表达式返回值是y17println!(x {}, x);
}六、函数的返回值
rust并不对返回值命令以-声明返回值的类型。rust中的函数返回值等于最后一个表达式的值。使用return x可以提前返回 fn get_return_value(x: i32) - i32 {if x 0{return -1;}x
}fn main() {let x get_return_value(-1);let y get_return_value(10);println!({}, {}, x,y); //-1, 10
}