![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Rust 从入门到精通系列教程
文章平均质量分 84
繁依Fanyi
博主找工作中。。。。
展开
-
【Rust 基础篇】Rust派生宏:自动实现trait的魔法
在Rust中,派生宏是一种特殊的宏,它允许开发者为自定义的数据类型自动实现trait。派生宏使用// 派生宏的处理逻辑 // ... }在上述例子中,我们使用属性定义了一个名为YourTrait的派生宏。派生宏接受一个参数input,表示派生宏调用的输入。在派生宏的处理逻辑中,我们可以根据input对类型上的trait进行自动实现,并返回一个作为输出。原创 2023-08-04 19:17:59 · 1412 阅读 · 0 评论 -
【Rust 基础篇】Rust类函数宏:代码生成的魔法
在Rust中,类函数宏是一种特殊的宏,它允许开发者创建类似函数调用的宏,并在编译期间对代码进行生成和转换。类函数宏使用proc_macro模块中的类型来处理输入和输出。// 宏的处理逻辑 // ... }在上述例子中,我们使用proc_macro模块中的类型定义了一个名为的类函数宏。宏接受一个参数input,表示宏调用的输入。在宏的处理逻辑中,我们可以根据input对代码进行生成和转换,并返回一个作为输出。类函数宏可以用于定制化地生成自定义数据结构。原创 2023-08-04 19:10:52 · 1602 阅读 · 0 评论 -
【Rust 基础篇】Rust 属性宏:定制你的代码
在Rust中,属性宏是一种特殊的宏,它允许开发者在代码上方添加自定义的属性,并在编译期间对代码进行处理。属性宏使用// 宏的处理逻辑 // ... }在上述例子中,我们使用属性来定义了一个名为的属性宏。属性宏接受两个attr表示属性的输入,item表示应用该属性的代码块。在宏的处理逻辑中,我们可以根据attr和item对代码进行定制化处理,并返回一个作为输出。属性宏可以用于定制化地生成自定义数据结构。让我们通过一个例子来演示如何使用属性宏生成一个自定义的数据结构。println!原创 2023-08-04 19:07:07 · 784 阅读 · 0 评论 -
【Rust 基础篇】Rust 声明宏:代码生成的魔法
在Rust中,声明宏是一种特殊的宏,使用关键字来定义。// 宏规则 // ... }其中,macro_name是宏的名称,宏规则是一系列模式匹配和替换的规则,用于匹配输入的代码片段并生成相应的代码片段。原创 2023-08-04 19:03:13 · 957 阅读 · 1 评论 -
【Rust 基础篇】Rust宏:代码生成的黑魔法
在Rust中,宏是一种特殊的函数,可以使用关键字来定义。// 宏规则 // ... }其中,macro_name是宏的名称,宏规则是一系列模式匹配和替换的规则,用于匹配输入的代码片段并生成相应的代码片段。除了使用#[derive]宏,我们还可以自定义属性宏,用于处理更复杂的场景。让我们创建一个简单的自定义属性宏,用于检查函数的参数是否大于10。// 处理输入的代码,并生成新的代码 // ... }在上述例子中,我们使用proc_macro模块导入了和宏,然后定义了一个名为check_arg的自定义属性宏。原创 2023-08-03 17:38:45 · 1413 阅读 · 0 评论 -
【Rust 基础篇】Rust高级函数:函数作为参数与返回值
本篇博客将深入探讨Rust中高级函数的概念,包括函数作为参数传递、函数作为返回值返回,以及使用高级函数的一些常见模式,以便读者全面了解Rust中高级函数的使用方法。本篇博客深入探讨了Rust中高级函数的概念,包括函数作为参数传递、函数作为返回值返回,以及使用高级函数的一些常见模式。通过将函数作为参数传递,我们可以在不修改函数本身的情况下,改变函数的行为,使得代码更加灵活和可扩展。在Rust中,函数可以作为返回值返回,这使得我们可以返回一个特定函数,根据需要执行不同的逻辑。原创 2023-08-03 16:25:55 · 1719 阅读 · 1 评论 -
【Rust 基础篇】Rust Sized Trait:理解Sized Trait与动态大小类型
在Rust中,Sized是一个特殊的trait,它用于标识类型是否在编译期已知大小。// 该trait没有任何方法,用于标识类型是否具有确定的大小 }需要注意的是,所有的类型默认都是Sized的,除非使用特殊语法来标识为不具有确定大小的动态大小类型。原创 2023-08-02 22:18:16 · 1051 阅读 · 0 评论 -
【Rust 基础篇】Rust动态大小类型:理解动态大小类型与编写安全的代码
在Rust中,动态大小类型(DST)是一种特殊的类型,它的大小在编译时无法确定,需要在运行时根据实际情况进行确定。动态大小类型主要包括引用类型和trait对象。要定义引用类型,需要使用符号在变量前面创建引用。// 定义引用类型 fn main() {let x = 42;// 创建引用 }在上述例子中,我们创建了一个变量x,然后使用引用(&)创建了一个引用reference,引用了变量x的值。要定义trait对象,需要使用&dyn Trait语法来引用具体类型的值。原创 2023-08-02 22:02:26 · 1100 阅读 · 1 评论 -
【Rust 基础篇】Rust Never类型:表示不会返回的类型
在Rust中,Never类型是一种特殊的类型,它表示一个函数永远不会返回。Never类型通常用于描述那些不会正常返回的情况,例如在处理panic(程序错误终止)时,或者在一些特殊情况下表示程序不会继续执行。Never类型在Rust中使用!符号表示,因此它也被称为"感叹号"类型。// Never类型示例:表示panic的函数 fn panic_and_never_return() ->!panic!");在上述例子中,我们定义了一个函数,它的返回类型是Never类型!。原创 2023-08-01 20:52:54 · 789 阅读 · 0 评论 -
【Rust 基础篇】Rust类型别名:为类型赋予新的名字
在Rust中,类型别名是一种用于给现有类型赋予新的名字的特性。通过类型别名,我们可以为现有类型创建一个新的名称,并在代码中统一使用新的名称来代替复杂的类型。// 类型别名示例:为u32类型赋予新的名字 type MyInt = u32;在上述例子中,我们使用类型别名为u32类型赋予新的名字MyInt。要使用类型别名,需要使用type关键字定义新的类型别名。// 定义类型别名 type MyInt = u32;在上述例子中,我们定义了一个类型别名MyInt,它是对u32类型的新的名称。原创 2023-08-01 20:49:34 · 1256 阅读 · 0 评论 -
【Rust 基础篇】Rust Newtype模式:类型安全的包装器
Newtype模式是一种常见的编程模式,用于创建类型安全的包装器。在Rust中,Newtype模式通过定义新的结构体包装器来包装现有的类型,从而在不引入运行时开销的情况下提供额外的类型安全性。通过Newtype模式,我们可以在代码中引入新的类型,而无需在运行时增加额外的开销,因为Newtype模式在编译时被完全优化。// Newtype模式示例:定义新的结构体包装器 struct MyInt(i32);在上述例子中,我们使用Newtype模式定义了一个新的结构体包装器MyInt,用于包装现有的类型i32。原创 2023-07-31 20:37:36 · 327 阅读 · 1 评论 -
【Rust 基础篇】Rust 父trait:扩展和组织trait的继承体系
在Rust中,父trait是指一个trait可以继承自另一个trait,从而扩展更多的行为或组合多个trait形成一个更大的trait继承体系。通过父trait的继承,我们可以在一个trait的基础上构建更丰富的行为,使代码更具灵活性和可复用性。// 父trait示例:定义基本的打印功能 trait Printable {} // 定义父trait,并继承自Printable trait Debuggable : Printable {在上述例子中,我们定义了一个traitPrintable。原创 2023-07-31 20:27:58 · 849 阅读 · 0 评论 -
【Rust 基础篇】Rust完全限定语法:精准定位代码实体
在Rust中,完全限定路径是指通过指定代码实体所在的模块路径来精确定位并引用代码实体。完全限定路径由模块路径和代码实体名称组成,通过来连接。// 完全限定路径示例:引用std模块中的Vec类型 let my_vector = std :: vec :: Vec :: new();在上述例子中,我们使用完全限定路径来引用标准库中的Vec类型。要使用完全限定路径,需要指定代码实体所在的模块路径。// 定义模块和结构体 mod my_module {原创 2023-07-30 10:06:15 · 290 阅读 · 0 评论 -
【Rust 基础篇】Rust运算符重载:灵活定制运算行为
在Rust中,运算符重载是指对标准运算符进行自定义实现,以便在自定义类型上使用这些运算符。通过运算符重载,我们可以为自定义类型定义特定的运算操作,从而使代码更具表现力和可读性。(负号)、!(逻辑非)、(解引用)等。(加法)、(减法)、(乘法)、(除法)等。// 运算符重载示例:自定义复数类型,并重载加法运算符 struct Complex {Complex {Complex {println!在上述例子中,我们定义了一个Complex结构体表示复数,并重载了加法运算符。原创 2023-07-30 10:00:17 · 558 阅读 · 0 评论 -
【Rust 基础篇】Rust默认泛型参数:简化泛型使用
在Rust中,默认泛型参数允许我们为泛型参数提供默认值。当我们在使用泛型时不指定具体类型,就会使用默认的泛型参数类型。// 定义一个带有默认泛型参数的函数 fn my_function < T = i32 >(value : T) -> T {value }在上述例子中,我们定义了一个函数,其中的泛型参数T带有默认值i32。当我们在使用该函数时不指定具体类型时,将使用默认的泛型参数类型i32。在定义泛型类型或函数时,使用的语法为泛型参数指定默认值。原创 2023-07-29 16:07:06 · 853 阅读 · 0 评论 -
【Rust 基础篇】Rust关联类型:灵活的泛型抽象
关联类型是Rust中一种特殊的泛型抽象机制。在trait中,可以定义一个或多个关联类型,这些关联类型与trait的实现类型相关联。关联类型允许我们在trait中使用泛型,但不需要提前指定具体的类型。// 定义一个trait,其中包含一个关联类型 trait MyTrait {type Item;在上述例子中,我们定义了一个traitMyTrait,其中包含一个关联类型Item。在trait的方法中,可以使用Self::Item来表示关联类型,而不需要提前指定具体的类型。原创 2023-07-29 16:01:16 · 251 阅读 · 0 评论 -
【Rust 基础篇】Rust Trait 实现:灵活的接口抽象
在Rust中,Trait是一种特殊的类型,用于定义某种功能或行为的抽象。Trait类似于其他编程语言中的接口(Interface),但又有所不同。Trait定义了一系列的方法(也称为关联函数),其他类型可以实现这些Trait,并提供具体的方法实现。Trait的定义使用trait关键字,其中可以包含一组方法签名,但不能包含具体的方法实现。// 定义一个Trait trait MyTrait {原创 2023-07-28 23:26:00 · 979 阅读 · 0 评论 -
【Rust 基础篇】Rust可变静态变量:全局状态的可变性管理
在Rust中,静态变量是一种特殊类型的变量,其生命周期从程序启动到程序结束,即在整个程序运行期间都存在。静态变量是全局的,可以在整个程序的任何地方访问。可变静态变量是一种特殊的静态变量,允许在程序的运行过程中修改其值。Rust中的可变静态变量使用static mut关键字声明,需要在unsafe代码块中访问和修改。原创 2023-07-28 23:24:58 · 1564 阅读 · 0 评论 -
【Rust 基础篇】Rust FFI:连接Rust与其他编程语言的桥梁
FFI是"Foreign Function Interface"的缩写,意为外部函数接口。在编程中,FFI是一种机制,用于在不同的编程语言之间进行交互。Rust的FFI允许Rust代码调用其他编程语言的函数,也允许其他编程语言调用Rust的函数。通过FFI,我们可以实现Rust与其他编程语言之间的无缝集成,从而充分发挥各种编程语言的优势。在Rust中,实现FFI的主要方式是使用extern关键字。extern关键字用于声明外部函数,告诉Rust编译器这是一个外部函数,而不是Rust自己的函数。原创 2023-07-27 15:39:19 · 1317 阅读 · 0 评论 -
【Rust 基础篇】Rust中的不安全函数:解锁系统级编程的黑盒之门
在Rust中,不安全函数是指在函数体内可以执行一些不安全操作的函数。Rust通过unsafe关键字来标识不安全函数。使用unsafe解引用裸指针:在不安全函数内部可以直接对裸指针进行解引用操作,无需遵守Rust的借用规则。调用其他不安全函数:在不安全函数内部可以调用其他的不安全函数。读取和修改全局变量:在不安全函数内部可以访问和修改全局变量,甚至是可变静态全局变量。执行不安全代码块:在不安全函数内部可以使用unsafe代码块,进一步扩展不安全操作的范围。原创 2023-07-27 15:33:47 · 765 阅读 · 0 评论 -
【Rust 基础篇】Rust中的不安全代码:谨慎探索黑盒之门
在Rust中,不安全代码是指在编写时必须遵循一些特定规则,并且在运行时可能导致不安全行为的代码块。Rust通过unsafe关键字来标识不安全代码块。通过在代码块周围加上unsafe关键字,Rust编译器将允许编写的代码绕过借用检查器和所有权系统的限制,允许进行一些"危险"的操作。解引用裸指针:不经过安全检查,直接通过裸指针来访问内存。调用不安全函数:不安全函数是以unsafe fn关键字定义的函数,允许在其中进行不安全的操作。原创 2023-07-26 23:49:45 · 147 阅读 · 0 评论 -
【Rust 基础篇】Rust 模式语法
除了基本数据类型和标准库提供的数据类型,我们还可以使用自定义类型模式匹配自己定义的数据类型。match s {在上述例子中,我们定义了一个名为CustomEnum的枚举类型,有三个不同的成员。我们还定义了一个名为的结构体类型。函数使用match表达式匹配输入的custom枚举值,打印不同的匹配结果。最后,我们在main函数中使用自定义类型模式匹配枚举和结构体。原创 2023-07-26 23:46:57 · 544 阅读 · 0 评论 -
【Rust 基础篇】Rust 不可反驳模式与可反驳模式
Rust模式的两种形式:不可反驳模式和可反驳模式,分别用于处理总是成功匹配和可能失败匹配的情况。不可反驳模式用于let语句和函数参数中,可反驳模式用于if let表达式和while let循环中。通过合理使用这两种模式,我们可以编写更加简洁、清晰和安全的Rust代码。希望本篇博客能为您深入解析Rust模式的两种形式,并帮助您在实际项目中灵活运用模式匹配。继续深入学习Rust,您将成为一名熟练的Rust程序员,并能编写出更高效、可维护的代码。祝您编程愉快!原创 2023-07-25 17:38:21 · 564 阅读 · 1 评论 -
【Rust 基础篇】Rust 模式:高效、安全和灵活的匹配工具
在Rust中,模式是用于匹配和解构数据的一种语法特性。它可以用于多种场景,包括匹配变量、元组、结构体、枚举、引用、切片等。模式是Rust中的重要概念,与match表达式、let语句、函数参数等密切相关。高效:Rust编译器能够在编译时对模式进行静态检查,从而确保模式匹配是完备的,不会漏掉任何情况,减少运行时的错误和性能损失。安全:Rust模式匹配是穷尽的,不允许存在模式的重叠或冲突,以避免潜在的错误和模糊性。灵活:Rust模式提供了丰富的语法,使得我们可以根据需要进行复杂的匹配和解构,适用于各种场景。原创 2023-07-25 17:28:43 · 1093 阅读 · 0 评论 -
【Rust 基础篇】Rust Trait 对象:灵活抽象与动态分发
Trait 是 Rust 中一组定义方法的抽象。它类似于其他编程语言中的接口或抽象类,但在 Rust 中更为强大和灵活。Trait 定义了一系列方法的签名,但并不提供具体的实现。这使得 Trait 成为一种强大的抽象工具,允许我们在不同类型之间共享相同的行为。Trait 对象是通过虚函数表(VTable)来实现动态分发的。VTable 是一个包含了 Trait 中所有方法的函数指针表,通过它可以在运行时查找和调用相应的方法。在 Rust 中,我们可以通过trait关键字定义一个 Trait。原创 2023-07-24 16:57:10 · 394 阅读 · 0 评论 -
【Rust 基础篇】Rust 封装
本篇博客详细介绍了 Rust 中封装的概念和用法,包含了结构体封装、访问控制、封装的优势和最佳实践。通过封装,我们可以将数据和方法组合在一起,隐藏实现细节,提高代码的可维护性和安全性。希望本篇博客对你理解和应用 Rust 中的封装有所帮助。原创 2023-07-23 15:47:44 · 807 阅读 · 0 评论 -
【Rust 基础篇】Rust 对象
在 Rust 中,对象是一种数据类型的实例,它包含了数据和操作这些数据的方法。通过结构体、Trait 对象和泛型对象,我们可以在 Rust 中实现类似面向对象编程的特性,提高代码的灵活性和可复用性。对象是 Rust 中重要的编程思想之一,在实际的项目开发中,灵活运用对象可以帮助我们构建结构清晰、可维护、高效的代码。除了 Trait 对象,Rust 还支持泛型对象,通过泛型来实现对不同类型的对象进行抽象。:通过泛型和 Trait 来实现对象的通用性,使得代码可以在不同的上下文中复用。方法用于计算形状的面积。原创 2023-07-23 15:45:49 · 372 阅读 · 0 评论 -
【Rust 基础篇】Rust Send 和 Sync Trait
本篇博客详细介绍了 Rust 中Send和Synctrait 的使用方法,包括Sendtrait 表示类型的所有权可以在线程间传递,Synctrait 表示类型在多个线程中可以安全地共享。我们还讨论了如何避免数据竞争和内存安全问题,并介绍了一些类型应该实现Send和Sync的约束。希望本篇博客对你理解和应用 Rust 中的Send和Synctrait 有所帮助。原创 2023-07-22 23:43:32 · 577 阅读 · 1 评论 -
【Rust 基础篇】Rust 互斥器(Mutex)
本篇博客详细介绍了 Rust 中互斥器的使用方法,包括创建互斥器、避免数据竞争、互斥器的死锁等内容。互斥器是一种强大的并发原语,能够保护共享数据的安全访问,避免数据竞争问题。同时,我们需要注意在多个互斥器之间的锁获取顺序,以避免出现死锁情况。希望本篇博客对你理解和应用 Rust 中的互斥器有所帮助。原创 2023-07-22 23:41:42 · 1636 阅读 · 0 评论 -
【Rust 基础篇】Rust 通道实现单个消费者多个生产者模式
本篇博客详细介绍了 Rust 中单个消费者多个生产者模式的实现方法,包括创建 MPMC 通道、避免数据竞争和线程安全、多个消费者和生产者之间的通信以及通道的关闭。MPMC 是一种常见的并发模式,在并发编程中有着广泛的应用场景,特别适合多个线程之间进行数据交换和协作的场景。希望本篇博客对你理解和应用 Rust 中的单个消费者多个生产者模式有所帮助。原创 2023-07-21 23:49:00 · 961 阅读 · 0 评论 -
【Rust 基础篇】Rust 通道(Channel)
本篇博客详细介绍了 Rust 中通道的使用方法,包括创建通道、向通道发送数据、从通道接收数据、多个发送者和接收者的使用以及通道的应用场景。通道是 Rust 中强大的并发原语,通过它我们可以实现线程间的安全通信和同步。希望本篇博客对你理解和应用 Rust 中的通道有所帮助。原创 2023-07-21 23:46:20 · 1234 阅读 · 0 评论 -
【Rust 基础篇】Rust 线程与 Move 闭包
本篇博客详细介绍了 Rust 中线程和 Move 闭包的使用方法,包括创建线程、线程间通信、在线程中使用 Move 闭包等。Rust 提供了强大的多线程支持,并通过 Move 闭包使得在多线程环境中传递数据更加灵活和高效。希望本篇博客对你理解和应用 Rust 中的多线程和 Move 闭包有所帮助。原创 2023-07-20 21:53:05 · 551 阅读 · 1 评论 -
【Rust 基础篇】Rust 多线程:并发编程的艺术
本篇博客详细介绍了 Rust 中多线程的使用方法,包括创建线程、线程间通信、等待线程结束等。Rust 提供了强大的多线程支持,通过合理地使用同步原语可以避免线程安全问题。希望本篇博客对你理解和应用 Rust 中的多线程编程有所帮助。原创 2023-07-20 21:47:25 · 712 阅读 · 0 评论 -
【Rust 基础篇】Rust 树形结构:实现与应用
在计算机科学中,树形结构是一种层级化的数据结构,其中每个节点有一个父节点和多个子节点。层级结构:节点之间有明确的层级关系,每个节点除了根节点外都有一个唯一的父节点。递归特性:每个节点可以有多个子节点,每个子节点又可以作为父节点,形成递归的结构。树形结构在很多领域有广泛的应用,例如文件系统、数据库索引、解析器等。本篇博客详细介绍了 Rust 中树形结构的定义与特点,并通过代码示例展示了如何用 Rust 实现树形结构和进行树的遍历。树形结构在计算机科学中有着广泛的应用,对于理解和应用它具有重要意义。原创 2023-07-19 21:13:32 · 1489 阅读 · 0 评论 -
【Rust 基础篇】Rust 弱引用:解决引用循环与内存泄漏
本篇博客详细介绍了 Rust 弱引用的概念、用法,以及如何通过弱引用解决引用循环和内存泄漏问题。引用循环是一种常见的编程错误,容易导致内存泄漏和资源泄漏,因此在编写 Rust 代码时需要特别注意。希望本篇博客对你理解和使用 Rust 弱引用有所帮助。原创 2023-07-19 21:03:05 · 1199 阅读 · 0 评论 -
【Rust 基础篇】Rust 引用循环:解析和避免
引用循环在 Rust 中是一种常见的编程错误,它会导致资源无法被正确释放,从而造成内存泄漏和其他潜在的问题。引用循环通常发生在存在相互引用的情况下,即 A 对象引用了 B 对象,同时 B 对象也引用了 A 对象,形成一个闭环。data : 2 , next : Some(Box :: new(node1)) , // node2 引用了 node1 };// node1 引用了 node2 let node1_next = node2 . next . unwrap();原创 2023-07-18 23:48:20 · 935 阅读 · 1 评论 -
【Rust 基础篇】Rust 的 `Rc<RefCell<T>>` - 共享可变性的智能指针
Rc是一个引用计数指针,它允许多个所有者共享相同的数据。RefCell是一个在有多个引用的情况下允许对数据进行可变操作的容器。由于Rc本身不允许可变性,我们使用RefCell来包装数据,使得即使在Rc有多个所有者的情况下,我们仍然可以在需要时修改数据。本篇博客详细介绍了 Rust 中的使用方法和特性。是一种允许多个所有者共享可变数据的智能指针,它实现了内部可变性的概念。它在多线程编程和递归数据结构中有着广泛的应用。希望本篇博客对你理解和应用 Rust 中的有所帮助。原创 2023-07-18 23:46:16 · 1148 阅读 · 0 评论 -
【Rust 基础篇】Rust Rc 智能指针的使用
Sized > {// 内部实现细节 }Rc 表示一个指向类型 T 的引用计数智能指针。允许多个所有者共享数据,即 Rc 实例可以有多个引用。Rc 实例之间通过引用计数跟踪共享数据的生命周期。当最后一个 Rc 实例被丢弃时,数据将被自动释放。本篇博客详细介绍了 Rust 中 Rc 智能指针的使用方法和特性。Rc 智能指针允许多个所有者共享相同的数据,并在没有任何所有者时自动释放数据。它在共享所有权的场景中非常有用,并通过引用计数跟踪数据的生命周期。原创 2023-07-17 23:57:33 · 915 阅读 · 0 评论 -
【Rust 基础篇】Rust 早期释放(2-Phase Drop)的使用
早期释放是通过在 Rust 的 Drop trait 中实现drop方法的两个阶段来实现的。第一阶段:在第一阶段中,Rust 会调用drop方法,将资源标记为“即将被释放”。此时,资源仍然是有效的,但无法直接访问。第二阶段:在第二阶段中,Rust 会调用drop方法,对资源进行最终的释放操作。通过早期释放机制,我们可以在第一阶段中对资源进行清理和处理,确保资源的正确释放和状态的一致性。本篇博客详细介绍了 Rust 中早期释放(2-Phase Drop)的使用方法和特性。原创 2023-07-17 23:56:04 · 863 阅读 · 0 评论 -
【Rust 基础篇】Drop Trait 清理代码
Drop trait 需要实现一个drop方法,该方法在值离开作用域时被调用。通过在drop方法中编写清理代码,我们可以控制类型在销毁时的行为。Drop trait 的实现是自动的,编译器会根据类型的所有权和生命周期进行自动插入。本篇博客详细介绍了 Rust 中 Drop trait 的使用方法和特性。通过实现 Drop trait,我们可以自定义类型在销毁时的清理逻辑,例如释放资源或执行必要的操作。希望本篇博客对你理解和应用 Rust 中的 Drop trait 有所帮助。原创 2023-07-16 20:57:30 · 835 阅读 · 0 评论