Rust 有一个被称为原始数据类型的列表。 在本文中,我们将讨论 Rust 中的原始数据类型列表——我们将把它们分为标量和复合类型——以及 Rust 中原始数据类型的限制。
我们将涵盖:
什么是原始数据类型?
Rust 编程语言回顾
Rust 中的原始数据类型
Rust 中的标量原始类型
Rust 中的复合原始类型
Rust 原始类型的限制
本文旨在帮助那些刚开始使用 Rust 并希望快速理解并能够使用 Rust 中的原始数据类型的人。
顾名思义,原始数据类型基本上只是编程语言附带的数据类型。 它们是内置的,当组合在一起时,可以形成更复杂的数据类型,称为非原始数据类型。
正如我们所提到的,Rust 编程语言带有一个内置的原始数据类型列表,开发人员可以将其用作其他数据类型的构建块。
Rust 将自己描述为一种运行速度极快、防止所有崩溃并消除数据竞争的系统编程语言。 它的内存效率很好,因为它没有运行时或垃圾收集器。 由于这个和许多其他原因, Rust 是一种流行且深受喜爱的编程语言 。
目前,这种编程语言及其社区还相对年轻。 这意味着正在不断地开发以添加、改进和稳定各种特性、方法和特征实现。
轻松使用 Rust 。 您可以通过简单的命令行界面 (CLI) 、 WebAssembly (Wasm) 、网络和嵌入式
人们大多喜欢谈论 Rust 是否值得学习或学习曲线是否陡峭。 但最终,由每个人决定是否值得为您的个人需求学习。
当然,确实有一些事情需要注意让 Rust 与众不同:
超过 20 万开发人员使用 LogRocket 来创造更好的数字体验 了解更多 →
这是一门精心设计的语言
与其他语言相比,它更注重正确性和安全性
它具有良好的并发性和速度
它有一个非常强大的社区
Rust 由 Graydon Hoare 设计,并于 2010 年 7 月 7 日首次亮相。截至本文发表时,该编程语言 目前的版本为 1.63.0 ,于 2022 年 8 月 11 日发布。
让我们看看 Rust 提供的原始数据类型。
我们想首先将它们分组为标量和复合数据类型。 这两者的区别在于复合类型在一个类型中包含多个值,而标量类型只包含一个值。
在 Rust 中有五种你应该熟悉的标量原始类型:
布尔值
特点
整数
漂浮的
单元
让我们看一下每种类型的定义和示例。
bool数据类型
布尔数据类型被称为真或假,如下所示:
let active:bool = true; let inactive:bool = false;
确保您使用 bool声明布尔变量时的关键字,如上所示。
不要错过 The Replay 来自 LogRocket 的精选时事通讯
了解 LogRocket 的 Galileo 如何消除噪音以主动解决应用程序中的问题
使用 React 的 useEffect 优化应用程序的性能
之间切换 在多个 Node 版本
了解如何 使用 AnimXYZ 为您的 React 应用程序制作动画
探索 Tauri ,一个用于构建二进制文件的新框架
比较 NestJS 与 Express.js
布尔数据类型主要用于比较值或逻辑——例如,检查测试分数是 A、B 还是 C。
char数据类型
字符类型是 4 字节数据类型。 它用于存储单个字符,例如:
let first:char = 'a'; let second:char = 'b'; let symbol:char = '∞';
字符数据类型用于存储单个字符,允许 Rust 中的内存分配保持较小。
integer数据类型
有多种整数数据类型,分为两类:有符号 (i) 和无符号 (u)。 它们包括以下内容: i8, i16, i32, i64, isize, u8, u16, u32, u64, usize. 这里有些例子:
let height:u8 = 172; //u8 let weight:u8 = 68; // u8 let size:u8 = 23; // u8 let data:i8 = -128 // i8
floating数据类型
浮动数据类型始终是 f32或者 f64,范围可以从负数到正数:
f32 ---> -3.8x10^8 to +3.8x10^8 f64 ---> -1.8x10^308 to +1.8x10^308
浮点数就是我们所说的小数。 请参阅下面的一些示例:
let interest:f32 = 1.20; let returns:f32 = 2.80; let agency:f64 = 10.0;
unit数据类型
在 Rust 中,单位数据类型使用符号 ()它主要用作避免使用的机制 null.
任何不返回任何内容的表达式实际上都会返回 ()在锈。 它更像 void在类 C 语言中。
另一个用例就像 Response<(), String>这意味着响应可能失败或成功。
下面是 Rust 中的四种复合原始数据类型,我们将在下面介绍:
大批
细绳
片
元组
正如我们在上一节中所做的那样,让我们看一下每种类型的定义和示例。
array数据类型
数组是包含一组元素的数据类型。 它的大小始终是固定的并且具有相同的数据类型,如下所示:
let counts: [i32; 7] = [4, 2, 4, 8, 3, 2, 4, 8]; let grade: [i32; 4] = [20, 40, 34, 70];
在上面的例子中, counts数组包含 7数据类型元素 i32(整数),而 grade数组包含 4数据类型元素 i32.
string数据类型
有 两个 stringRust 中的数据类型 : String(字符串对象)和 &str(字符串字面量)。
这 Stringobject 不在核心语言中,但在标准库中提供。 它也是最常见的字符串类型,因为它是可变的。 创建一个 String:
String::new(); let name = String::new(); name.push_str = 'Victor Jonah'; println("{}", name);
这 &strRust 中的数据类型被视为字符串切片,据说是不可变的,这意味着它们在程序的生命周期内不能更改。 看看下面的例子:
let name:&str = 'Victor Jonah'; let company:&str = 'LogRocket';
在上面的示例中,在该程序的生命周期内, name将始终与字符串相关联 Victor Jonah, 尽管 company将始终与字符串相关联 LogRocket.
slice数据类型
切片与数组类似,但有一些区别。
虽然数组大小是固定的,但切片的大小是动态的; 长度在编译时是未知的,数据被分割成一个新的集合。 请参见下面的示例:
let grades: [132:6] = [20, 10, 30, 40, 50, 10, 20]; let slice = &[20...4]; // 20, 10, 30, 40
切片也是一个指向上面字符串对象的指针,我们可以在其中检索字符串值中的某个字符。 我们还可以借用切片中的元素以在其他地方使用。
tuple数据类型
在 JavaScript 等其他语言中,元组被称为对象。 它们是包含不同类型元素的固定数据类型——与数组不同,数组只能包含相同类型的元素。
let employee: (&str, i32, &str) = ('Victor Jonah', 25, 'Technical Writer');
在上面的例子中,元组 employee包含三个元素:一个字符串 ( Victor Jonah), 一个整数 ( 25) 和另一个字符串 ( Technical Writer).
作为一个旁注,讨论 Rust 编程语言 的一般限制将是必不可少的。 大多数人都说过或声称 Rust 非常可爱——这是真的——但有几点需要考虑。
首先要注意的是它的学习曲线很陡。 Rust 需要更多时间来学习作为一种语言,因为它是一种系统编程语言并且具有高级编程概念。
当谈到 Rust 原始数据类型并将它们组合在一起时,有很多东西需要学习——比如模式匹配、指针、字符串文字、三种类型的数组等等。 不过,值得您花时间。
根据我的观察,陡峭的学习曲线主要是由于早期使用 Rust 的 Rust 文档缺乏清晰度。
这让我想到了第二点:Rust 社区一开始可能不太引人注目,但当你伸出手时,社区就会变得热情、活跃和乐于助人。
另外需要注意的是,Rust 是一种静态编程语言,它非常严格,以至于在编译之前必须说明所有内容。 这是 Rust 的主要原则之一,它强制要求在编译时检查所有内容。
这可能会减慢开发速度,但也是一个很好的原因,因为当大多数事情在编译时检查时,程序在运行时失败的可能性较小。
Rust 原始数据类型是内置的,它们的用例正是典型编程语言所需要的。 这些数据类型有两种形式:标量和复合。
了解和理解 Rust 中所有不同的原始数据类型对您的 Rust 之旅非常有帮助。 为了这个目的,我在简短的一面写了这篇文章。 感谢您的阅读。
调试 Rust 应用程序可能很困难,尤其是当用户遇到难以重现的问题时。 如果您对监控和跟踪 Rust 应用程序的性能、自动显示错误以及跟踪缓慢的网络请求和加载时间感兴趣,请 尝试 LogRocket 。
LogRocket 就像一个用于 Web 和移动应用程序的 DVR,几乎可以记录 Rust 应用程序上发生的所有事情。 无需猜测问题发生的原因,您可以汇总并报告问题发生时应用程序所处的状态。 LogRocket 还监控您的应用程序的性能,报告客户端 CPU 负载、客户端内存使用情况等指标。