当前位置: 首页 > article >正文

Rust基础语法

文章目录

    • Rust输出到命令行
    • 关于变量
      • 常量vs不可变变量
    • 数据类型
      • 整数
      • 浮点数
      • bool
      • 字符类型
      • 复合类型
    • 注释

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的数据类型主要有以下几种

整数

位长度有符号无符号
8biti8u8
16biti16u16
32biti32u32
64biti64u64
128biti128u128
arch(架构位数)isizeusize

除了支持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++语言类似

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


http://www.kler.cn/a/595988.html

相关文章:

  • 二项式分布(Binomial Distribution)
  • 深兰科技获评“产学研用——共研体联盟”链主型企业称号
  • c#难点2
  • Docker运行Mysql异常:Operation not permitted
  • stm32第六天继电器
  • 软件测试面试通关秘籍:高频技术考点与实战技巧全解析
  • 登山第二十梯:无人机实时自主探索——我是一只小小小鸟
  • [特殊字符] 2025蓝桥杯备赛Day10——B2120 单词的长度
  • Linux中的make与Makefile详解
  • linux 基础网络配置文件
  • 容器上云方案
  • STM32标准库之I2C示例代码
  • 【ArcGIS10.2】ArcGIS10.2彻底卸载
  • 下面从源码的角度看Spring Boot设计模式
  • [操作系统] 进程间通信:匿名管道原理与操作
  • 小试牛刀-Turbine数据分发
  • Hive Presto SQL 查询优化指南
  • 使用 Fetch API 实现流式读取
  • 深入理解 HTML 框架:iframe 与页面分割的学习进度(二)
  • 在 Linux 系统中,路径(Path)用于定位文件或目录的位置。路径分为两种类型:相对路径和绝对路径。它们的核心区别在于路径的起点不同