Rust 数据类型介绍

news/2024/7/3 2:09:28
Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。

Rust 数据类型介绍Rust 数据类型介绍

Rust 语言中的基础数据类型有以下几种。

整数型(Integer)

整数型简称整型,按照比特位长度和有无符号分为一下种类:

位长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型。

整数的表述方法有以下几种:

进制
十进制98_222
十六进制0xff
八进制0o77
二进制0b1111_0000
字节(只能表示 u8 型)b'A'

很显然,有的整数中间存在一个下划线,这种设计可以让人们在输入一个很大的数字时更容易判断数字的值大概是多少。

浮点数型(Floating-Point)

Rust 与其它语言一样支持 32 位浮点数(f32)和 64 位浮点数(f64)。默认情况下,64.0 将表示 64 位浮点数,因为现代计算机处理器对两种浮点数计算的速度几乎相同,但 64 位浮点数精度更高。

实例

fn main() {let x = 2.0; // f64let y: f32 = 3.0; // f32
}

数学运算

用一段程序反应数学运算:

实例

fn main() {let sum = 5 + 10; // 加 let difference = 95.5 - 4.3; // 减 let product = 4 * 30; // 乘 let quotient = 56.7 / 32.2; // 除 let remainder = 43 % 5; // 求余
}

许多运算符号之后加上 = 号是自运算的意思,例如:

sum += 1 等同于 sum = sum + 1。

注意:Rust 不支持 ++ 和 --,因为这两个运算符出现在变量的前后会影响代码可读性,减弱了开发者对变量改变的意识能力。

布尔型

布尔型用 bool 表示,值只能为 true 或 false。

字符型

字符型用 char 表示。

Rust的 char 类型大小为 4 个字节,代表 Unicode标量值,这意味着它可以支持中文,日文和韩文字符等非英文字符甚至表情符号和零宽度空格在 Rust 中都是有效的 char 值。

Unicode 值的范围从 U+0000 到 U+D7FF 和 U+E000 到 U+10FFFF (包括两端)。 但是,"字符"这个概念并不存在于 Unicode 中,因此您对"字符"是什么的直觉可能与Rust中的字符概念不匹配。所以一般推荐使用字符串储存 UTF-8 文字(非英文字符尽可能地出现在字符串中)。

注意:由于中文文字编码有两种(GBK 和 UTF-8),所以编程中使用中文字符串有可能导致乱码的出现,这是因为源程序与命令行的文字编码不一致,所以在 Rust 中字符串和字符都必须使用 UTF-8 编码,否则编译器会报错。

复合类型

元组用一对 ( ) 包括的一组数据,可以包含不同种类的数据:
实例

let tup: (i32, f64, u8) = (500, 6.4, 1);
// tup.0 等于 500
// tup.1 等于 6.4
// tup.2 等于 1
let (x, y, z) = tup;
// y 等于 6.4

数组用一对 [ ] 包括的同类型数据。

实例

let a = [1, 2, 3, 4, 5];
// a 是一个长度为 5 的整型数组
let b = ["January", "February", "March"];
// b 是一个长度为 3 的字符串数组
let c: [i32; 5] = [1, 2, 3, 4, 5];
// c 是一个长度为 5 的 i32 数组
let d = [3; 5];
// 等同于 let d = [3, 3, 3, 3, 3];
let first = a[0];
let second = a[1];
// 数组访问
a[0] = 123; // 错误:数组 a 不可变
let mut a = [1, 2, 3];
a[0] = 4; // 正确

http://lihuaxi.xjx100.cn/news/283579.html

相关文章

PHP获取客户端真实IP的自定义函数

<?php//虽然使用 $_SERVER[REMOTE_ADDR] 也可以获取&#xff0c;但是要获取真实的客户端IP地址&#xff0c;需要使用下面的方法&#xff1a;function _getIP(){$ipgetenv(REMOTE_ADDR);$ip_ getenv(HTTP_X_FORWARDED_FOR);if (($ip_ ! "") && ($ip_ ! &…

算力觉醒后,智慧距离勃发就只差一个想法

“太阳把自己的能量以光的形式洒向地面&#xff0c;让植物得以利用光合作用生长成熟&#xff1b;繁茂的草木不仅为动物们提供了栖息的家园&#xff0c;更将太阳的馈赠化为甜蜜的果实&#xff0c;在滋养万灵的同时把自己对未来的希望变成种子&#xff0c;播撒到远方……形成下一…

中tr不能显示字符_BeautifulSoup4中find 和find_all的比较

BeautifulSoup4中find 和find_all分别有不同的含义&#xff0c;find返回的是TAG对象,只有一个值&#xff0c;可以直接使用属性例如&#xff0c;children。而find_all返回的是TAG对象的迭代对象&#xff0c;不能直接用TAG的属性&#xff0c;但是里面每个元素是TAG&#xff0c;可…

我翻译的一篇文章,OO设计中对象的创建和使用

OO设计中对象的创建和使用 转载于:https://www.cnblogs.com/lishu1980/archive/2006/06/22/432526.html

3月9日起陆续开学!快来看看有没有你所在的省份

导读 青海、贵州已明确了部分学校的开学时间&#xff01;近日&#xff0c;青海省人民政府发布《青海省人民政府通告&#xff08;第15号&#xff09;》&#xff0c;明确了部分学校的开学时间&#xff0c;具体如下&#xff1a;普通高中、中等职业学校原则上3月9日至13日陆续开学&…

【JavaEE】SpringBoot 拦截器详解 (统⼀功能处理)

目录✅1. 用户登录权限效验1.1 Spring AOP 用户统⼀登录验证的问题1.2 Spring 拦截器1.2.1 自定义拦截器1.2.2 将自定义拦截器加入到系统配置1.3 拦截器实现原理1.4 扩展&#xff1a;统⼀访问前缀添加2. 统一异常处理3. 统一数据返回格式3.1 为什么需要统⼀数据返回格式&#x…

python编程之slice与indices函数用法

这篇文章主要介绍了详解python编程中slice与indices使用示例&#xff0c;有需要的朋友可以借鉴参考下&#xff0c;希望能够有所帮助&#xff0c;祝大家多多进步&#xff0c;早日升职加薪一般来说&#xff0c;内置的slice()函数会创建一个切片对象&#xff0c;可以用在任何允许进…

JavaScript移除绑定在元素上的匿名事件处理函数

前言&#xff1a; 面试的时候有点蒙&#xff0c;结束之后想想自己好像根本就误解了面试官的问题&#xff0c;因为我理解的这个问题本身就没有意义。但是当时已经有一些思路&#xff0c;但是在一个点上被卡住。 结束之后脑子瞬间灵光&#xff0c;想出了当时没有迈出的那一小步。…