
Rust学习笔记
文章平均质量分 75
LuckyLay
这个作者很懒,什么都没留下…
展开
-
Rust学习笔记_18——HashSet
如果两个元素的哈希值相同(即发生了哈希冲突),它们将被存储在同一个桶中,并通过链地址法(也称为“拉链法”)或开放地址法来解决冲突。是一种集合数据结构,它允许你存储不重复的元素,并且可以在常数时间内(O(1) 平均时间复杂度)检查一个元素是否存在于集合中。中插入一个元素时,它的哈希值被计算出来,并用来确定元素在内部数组(也称为“桶”或“槽”)中的位置。不允许重复元素,如果尝试插入一个已经存在的元素,不保证元素的存储顺序,因此遍历的顺序是不确定的。如果元素存在并被成功移除,该方法将返回。该方法返回一个布尔值。原创 2024-12-08 23:14:36 · 660 阅读 · 0 评论 -
Rust学习笔记_17——HashMap
是一种非常有用的数据结构,它允许你存储键值对(key-value pairs),并且可以在常数时间内(O(1) 平均时间复杂度)根据键来查找对应的值。类型的值,这反映了 Rust 的所有权系统和可能的键不存在的情况。是 Rust 标准库的一部分,位于。默认情况下,Rust 的标准库类型如。中的值,因为它避免了多次哈希查找。需要根据键的哈希值来存储和查找值。方法提供了一种更高效的方式来更新。方法可以根据键来访问对应的值。等已经实现了这些 trait。原创 2024-12-08 23:12:43 · 511 阅读 · 0 评论 -
Rust学习笔记_16——Vector
索引访问可能会导致运行时错误(例如,如果索引超出范围),所以通常会使用。预先分配容量可以避免在添加元素时频繁地重新分配内存。是标准库中提供的动态数组类型,它是最常用的数据结构之一。宏是一个方便的语法糖,用于初始化包含指定元素的。表示数组中元素的类型。返回一个默认初始化的。,没有分配任何内存空间。创建一个具有指定容量的。在Rust编程语言中,方法在指定位置插入元素。原创 2024-12-05 23:04:46 · 1261 阅读 · 0 评论 -
Rust学习笔记_15——Union
是一种特殊的数据结构,允许你在同一个内存位置存储不同类型的值。中,所有的字段共享同一块内存,这意味着在任何给定时间,)有些相似,但有一个关键的不同点:在。只能安全地包含一个有效的值。在Rust编程语言中,原创 2024-12-05 23:02:21 · 894 阅读 · 0 评论 -
Rust学习笔记_14——结构体
在 Rust 中,你可以使用struct关键字来定义一个结构体。结构体的定义通常包含字段(field),每个字段都有一个名称和一个类型。age: u32,原创 2024-12-04 22:29:34 · 570 阅读 · 0 评论 -
Rust学习笔记_13——枚举
枚举通过enum关键字定义。每个枚举成员(也称为变体)可以是无值的,也可以包含值。原创 2024-12-04 22:27:58 · 665 阅读 · 0 评论 -
Rust学习笔记_12——闭包
在Rust编程语言中,闭包(closures)是一种匿名函数,它能够捕获并存储其所在作用域内的变量,以便在稍后的某个时间点调用。在大多数情况下,你不需要显式地指定闭包的类型,因为Rust的编译器能够推断它。当闭包以移动方式捕获变量时,原始变量将不再可用,因为闭包已经接管了该变量的所有权。不可变捕获是闭包捕获变量的默认方式。当闭包以不可变方式捕获变量时,它只能读取该变量的值,而不能修改它。这种方式保证了闭包内部对变量的访问是安全的,因为闭包不会改变变量的状态。可变捕获允许闭包修改其捕获的变量的值。原创 2024-12-03 22:48:26 · 1027 阅读 · 0 评论 -
Rust学习笔记_11——函数
Rust中的函数使用fn关键字进行定义。// 函数体 } // fn:关键字,用于声明一个函数。// function_name:函数的名称。// parameters:函数的参数列表,使用圆括号括起来。如果没有参数,则可以为空。// return_type:函数的返回类型。如果函数不返回任何值,则可以使用-> ()来表示空元组类型,即返回unit类型。// 函数体:包含执行语句的代码块,用大括号{}括起来。原创 2024-12-03 22:46:41 · 1131 阅读 · 0 评论 -
Rust学习笔记_10——守卫
在Rust中,守卫(guard)是match表达式中的一个特性,它允许你在模式匹配的过程中附加一个条件。这个条件是一个表达式,它必须返回一个布尔值(bool),用于进一步细化或约束某个模式何时应该被匹配。守卫通过if关键字引入,并紧跟在模式之后。原创 2024-12-02 23:14:28 · 776 阅读 · 0 评论 -
Rust学习笔记_09——模式匹配
Rust的模式匹配主要通过match表达式来实现,它可以与多种模式进行匹配,并根据匹配到的模式执行相应的代码块。在模式匹配中,匹配值(Matching Values)是指match表达式中被检查的变量或表达式的值。let x = 1;match x {// 当x匹配pattern1时执行的代码// 当x匹配pattern2时执行的代码// 可以有更多的模式_ => {// 当x不匹配任何前面的模式时执行的代码(也称为"通配符"模式)原创 2024-12-02 23:12:42 · 589 阅读 · 0 评论 -
Rust学习笔记_08——String
Rust 语言中的字符串类型是其数据类型的核心部分之一,用于处理文本数据。在 Rust 中,字符串是不可变的(immutable)默认情况下,但可以声明为可变(mutable)。Rust 使用 UTF-8 编码来处理字符串,这意味着它可以处理几乎任何语言的字符。字符串类型和字面量字符串是两个不同的概念,尽管它们都与文本数据相关,但它们在内存管理、可变性和用途上有所不同。字符串切片是对字符串的某一部分的不可变引用。字符串切片是 UTF-8 编码的,并且通常从字符串字面量或。是可增长的,可以通过方法如。原创 2024-12-01 21:57:07 · 1022 阅读 · 0 评论 -
Rust学习笔记_07——枚举和范围
Rust语言中的范围(Range)是一种用于生成数字序列或进行迭代操作的表达式。Rust提供了两种主要类型的范围:半开区间范围(half-open range)和步长范围(range with step)。这些范围在for循环和其他上下文中都非常有用。原创 2024-12-01 21:55:07 · 731 阅读 · 0 评论 -
Rust学习笔记_06——控制流(2)
循环是一种用于迭代集合(如数组、切片、向量、字符串、哈希映射的键或值、范围等)的便捷控制流结构。它提供了一种简洁且易于理解的方式来遍历集合中的每个元素,并对每个元素执行一段代码。循环,并跳出循环体,继续执行循环之后的代码。这对于在满足特定条件时提前退出循环非常有用。循环是一种基本的控制流结构,它允许程序在给定条件为真时重复执行一段代码块。Rust编程语言中,Rust编程语言中,原创 2024-11-29 22:45:34 · 568 阅读 · 0 评论 -
Rust学习笔记_05——控制流(1)
循环是一种基础且强大的控制流结构,它允许你创建一个无限循环,直到你在循环体内显式地使用。它还可以选择性地返回一个值,这个值可以被赋值给循环外部的变量。它们允许你根据某个条件的真假来执行不同的代码块。Rust中的if表达式是有返回值的,这意味着你可以将if表达式的结果赋值给变量。循环本身不支持标签,但你可以通过其他方式如闭包或额外的变量来模拟这种行为)。不过,在嵌套循环中,你可以通过标签(labels)来区分不同层级的。循环,以处理更复杂的逻辑。是必需的,即使代码块中只有一条语句。语句(尽管Rust的。原创 2024-11-29 22:43:35 · 833 阅读 · 0 评论 -
Rust学习笔记_04——引用
在Rust中,当数据的生命周期结束时,它的内存会被自动释放。例如,如果一个函数返回了一个指向局部变量的引用,而该局部变量在函数返回后已经被销毁,那么返回的引用就是一个悬挂引用。悬挂引用(Dangling Reference)在Rust中是一个严重的内存错误,它指的是一个引用指向了一个已经被释放的内存位置。在Rust中,引用是处理借用操作的关键机制,它通过一系列的规则来保证内存安全和避免数据竞争。悬挂引用是内存安全问题的一种表现,它可能导致程序在运行时访问无效的内存地址,从而引发各种不可预测的行为。原创 2024-11-28 09:00:56 · 1408 阅读 · 0 评论 -
Rust学习笔记_03——元组
你可以使用圆括号()来定义元组,并在其中用逗号分隔不同的元素。Rust中的元组默认是不可变的(immutable),但你可以通过mut关键字来使其可变println!原创 2024-11-28 08:58:55 · 893 阅读 · 0 评论 -
Rust学习笔记_02——数组
在Rust中,切片(Slice)是对数组或向量等连续内存区间的一个引用,它提供了一种不拥有数据所有权的、灵活的方式来访问数据序列的一部分。基本定义切片使用&[T]来表示,其中T是切片中元素的类型。切片是对数组或向量中一段连续内存区域的引用,因此它本身不拥有数据的所有权。切片是左闭右开的区间,即包含起始索引,但不包含结束索引。创建切片可以通过引用数组的一部分来创建切片。例如,会创建一个从数组arr的start索引到end索引(但不包括end)的切片。如果省略start,则默认为0;原创 2024-11-26 20:14:07 · 828 阅读 · 0 评论 -
Rust学习笔记_01——基础
Rust中的类型推导(Type Inference)是一种编译器功能,它允许程序员在编写代码时省略变量或表达式的类型注解,而编译器则会自动推断出这些类型。宏可以用来创建新的语法结构,简化重复的模式,或者实现其他语言特性。这个宏是卫生宏的一个很好的例子,因为它展示了宏如何在不影响调用者代码的情况下安全地执行其功能。在Rust中,变量默认是不可变的(immutable),这意味着一旦赋值后就不能再修改。要使用这个库,需要在。卫生宏是Rust宏的一个重要特性,它确保了宏的使用不会意外地干扰到程序的其他部分。原创 2024-11-26 19:33:41 · 1078 阅读 · 0 评论