Rust常见编程概念

变量和可变性

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

rust 复制代码
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。

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

rust 复制代码
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 一起使用,使这些关键字应用于已标记的循环而不是最内层的循环:

rust 复制代码
fn main() {
    let mut count = 0;
    'counting_up: loop {
        println!("count = {count}");
        let mut remaining = 10;

        loop {
            println!("remaining = {remaining}");
            if remaining == 9 {
                break;
            }
            if count == 2 {
                break 'counting_up;
            }
            remaining -= 1;
        }

        count += 1;
    }
    println!("End count = {count}");
}

while条件循环

和其他语言类似

for遍历集合

和其他语言类似

参考:

1.Rust常见编程概念

相关推荐
娅娅梨6 分钟前
C++ 错题本--not found for architecture x86_64 问题
开发语言·c++
汤米粥12 分钟前
小皮PHP连接数据库提示could not find driver
开发语言·php
冰淇淋烤布蕾15 分钟前
EasyExcel使用
java·开发语言·excel
拾荒的小海螺21 分钟前
JAVA:探索 EasyExcel 的技术指南
java·开发语言
马剑威(威哥爱编程)1 小时前
哇喔!20种单例模式的实现与变异总结
java·开发语言·单例模式
白-胖-子1 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
开发语言·c++·算法·蓝桥杯·等考·13级
好睡凯1 小时前
c++写一个死锁并且自己解锁
开发语言·c++·算法
java—大象1 小时前
基于java+springboot+layui的流浪动物交流信息平台设计实现
java·开发语言·spring boot·layui·课程设计
yyqzjw1 小时前
【qt】控件篇(Enable|geometry)
开发语言·qt
csdn_kike1 小时前
QT Unknown module(s) in QT 以及maintenance tool的更详细用法(qt6.6.0)
开发语言·qt