• Rust常见编程概念


    变量和可变性

    rust使用let声明变量,变量默认是不可改变的。通过在let后面加上mut,可以声明可变变量。可以在变量名后加:和类型名,来显式声明变量类型,例如:

    let a:u32 = 1;

    常量

    常量使用const声明,变量名一般约定使用大写。

    隐藏

    不同的作用域如果有重叠,且重叠区域内有同名的变量,那么更小的作用域里变量会隐藏外部作用域的变量。

    数据类型

    Rust有两类数据类型子集:标量(scalar)和复合(compound)。

    标量包括:整型、浮点型、布尔型、字符型。

    整型根据有无符号和长度,可以分为

    其中arch根据具体架构确定,32位为4字节,64位为8字节。

    整型可以根据不同的进制,写成不同的字面值形式:

    Rust 的浮点数类型是 f32f64,分别占 32 位和 64 位。默认类型是 f64,因为在现代 CPU 中,它与 f32 速度几乎一样,不过精度更高。所有的浮点型都是有符号的。

    Rust 中的所有数字类型都支持基本数学运算:加法、减法、乘法、除法和取余。整数除法会向零舍入到最接近的整数。 

    Rust 中的布尔类型有两个可能的值:truefalse。Rust 中的布尔类型使用 bool 表示。

    Rust 的 char 类型是语言中最原生的字母类型。Rust用单引号声明 char 字面量,使用双引号声明字符串字面量。Rust 的 char 类型的大小为四个字节 (four bytes),并代表了一个 Unicode 标量值(Unicode Scalar Value)。

    复合型可以将多个值合成一个类型。Rust 有两个原生的复合类型:元组(tuple)和数组(array)。

    元组使用包含在圆括号中的逗号分隔的值列表来创建一个元组。元组中的每一个位置都有一个类型。为了从元组中获取单个值,可以使用模式匹配(pattern matching)来解构(destructure)元组值。也可以使用点号(.)后跟值的索引来直接访问。

    不带任何值的元组有个特殊的名称,叫做 单元(unit) 元组。这种值以及对应的类型都写作 (),表示空值或空的返回类型。如果表达式不返回任何其他值,则会隐式返回单元值。

    数组中的每个元素的类型必须相同。Rust 中的数组与一些其他语言中的数组不同,Rust 中的数组长度是固定的。当你想要在栈(stack)而不是在堆(heap)上为数据分配空间,或者是想要确保总是有固定数量的元素时,数组非常有用。但是数组并不如 vector 类型灵活。vector 类型是标准库提供的一个 允许 增长和缩小长度的类似数组的集合类型。当不确定是应该使用数组还是 vector 的时候,那么很可能应该使用 vector。

    可以像这样编写数组的类型:在方括号中包含每个元素的类型,后跟分号,再后跟数组元素的数量。

    let a: [i32; 5] = [1, 2, 3, 4, 5];

    你还可以通过在方括号中指定初始值加分号再加元素个数的方式来创建一个每个元素都为相同值的数组:

    let a = [3; 5];

    可以使用索引来访问数组的元素。

    函数

    Rust 中通过输入 fn 后面跟着函数名和一对圆括号来定义函数。参数是特殊变量,是函数签名的一部分。在函数签名中,必须 声明每个参数的类型。函数体由一系列的语句和一个可选的结尾表达式构成。语句Statements)是执行一些操作但不返回值的指令。 表达式Expressions)计算并产生一个值。

    函数可以向调用它的代码返回值。我们并不对返回值命名,但要在箭头(->)后声明它的类型。在 Rust 中,函数的返回值等同于函数体最后一个表达式的值。使用 return 关键字和指定值,可从函数中提前返回;但大部分函数隐式的返回最后的表达式。

    注释

    使用//开始注释,并持续到本行的结尾。对于超过一行的注释,需要在每一行前都加上 //。

    控制流

    if条件语句

    包括if, else if, else。因为 if 是一个表达式,我们可以在 let 语句的右侧使用它。

    loop无条件循环语句

    包括loop, continue, break。因为loop是一个表达式,我们可以在 let 语句的右侧使用它。只需要在loop里通过break返回值。如果存在嵌套循环,breakcontinue 应用于此时最内层的循环。你可以选择在一个循环上指定一个 循环标签loop label),然后将标签与 breakcontinue 一起使用,使这些关键字应用于已标记的循环而不是最内层的循环:

    1. fn main() {
    2. let mut count = 0;
    3. 'counting_up: loop {
    4. println!("count = {count}");
    5. let mut remaining = 10;
    6. loop {
    7. println!("remaining = {remaining}");
    8. if remaining == 9 {
    9. break;
    10. }
    11. if count == 2 {
    12. break 'counting_up;
    13. }
    14. remaining -= 1;
    15. }
    16. count += 1;
    17. }
    18. println!("End count = {count}");
    19. }

    while条件循环

    和其他语言类似

    for遍历集合

    和其他语言类似

    参考:

    1.Rust常见编程概念

  • 相关阅读:
    Qt之数据序列化(结构体序列化,类序列化,含源码+注释)
    Mongodb的基本操作
    部署bpmn项目实现activiti流程图的在线绘制
    《Python编程:从入门到实战》(第2版)学习笔记 第5章 if语句
    请问这个用python代码尽量不要用函数要怎么写
    持续集成部署-k8s-命令行工具:基础命令的使用
    前端首屏渲染时间的极致优化
    基于SSM的药房药品采购集中管理系统的设计与实现
    抽象类与接口
    基于html、css、javascript的选项卡网页设计
  • 原文地址:https://blog.csdn.net/Mamong/article/details/132975028