Rust基础语法

发布于:2025-03-26 ⋅ 阅读:(34) ⋅ 点赞:(0)

Rust输出到命令行

输出到命令行主要可以使用println!()print!()
1. 这两个都有!是因为他们并非是函数,而是宏,具体我们以后再介绍,普通函数是不需要加!
2. 两者的区别是是否会在行尾加一个换行符
3. 具体使用方法和C语言的printf很像,但是是用{}作为占位符
4. 并且会自动识别和填充参数,字符也可以写在{}
5. 也可以使用数字指定参数的位置
6. 转义字符是相同的,只有{或者}是需要对应的写两遍

例如

fn main(){
    let a = 12;
    let b = 24;
    println!("a is {}", a);
    println!("a is {a}");
    println!("b is {1}, a is {0}", a, b);
    println!("{{");
}

image.png

关于变量

Rust是强类型语言,也就是说他对于变量的限制非常严格,但是具有自动判断变量类型的能力

默认情况下Rust的变量是不可变的,除非使用mut关键字声明为可变的变量

let a = 123; // 不可变
let mut b = 456; // 可变

声明变量使用let关键字

上面的a是不可变变量,因此任何形式的重新赋值都是不被允许的

Rust的安全也就从此可以体现,从语言层面上尽可能少的让变量发生变化

常量vs不可变变量

不可变变量是可以这样用的

let a = 1;
let a = 2;

我们可以认为这个a是一个变量,可以使用let重新绑定,但是在绑定之前是不允许被改变的

const a:i32 = 123;
let a = 456;

这是不合法的

尽管rust编译器可以自动推断类型,但是有时候并非我们所期望的类型,可以手动指定

let a:u64 = 123;

数据类型

Rust的数据类型主要有以下几种

整数

位长度 有符号 无符号
8bit i8 u8
16bit i16 u16
32bit i32 u32
64bit i64 u64
128bit i128 u128
arch(架构位数) isize usize

除了支持0x 0o 0b 分别表示16、8、2进制以外,十进制还支持使用下划线作为分隔符方便阅读,例如985_211,也可以用字节表示b'A'

浮点数

支持f32f64,现代计算机对这两种浮点数处理速度几乎相同,但是64位的精度更高

bool

用bool表示,只能是true或者false,需要注意的是,这里相对于C/C++的限制更加严格,bool类型是无法和int类型进行隐式类型转换的

字符类型

使用char表示,大小位4字节,主要是因为是使用Unicode编码的,可以支持中英日韩表情符号零宽度空格,这些都是有效字符

复合类型

元组使用(),是一组数据类型不一样的数据集合

数组使用[],是一组数据类型相同的数据结合

这两种类型的集合长度是不可变的,额外有一些用法如下

let tup = (1, '😀', 3.14);
let (x, y, z) = tup;

是可以进行结构化绑定的,使用时是tup.0,表示0位置的元素

数组的类型是[i32; 5] 表示5个i32类型的数

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

初始化可以用[3; 5]表示5个3

let a: [i32; 5] = [3; 5]

数组访问是a[3]

需要注意的是,数组和元组仍然是用mut关键字

注释

注释和C++语言类似

// /**/ /// 都是合法的


网站公告

今日签到

点亮在社区的每一天
去签到