Rust
文章平均质量分 88
Rust学习分享
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Rust模块化开发从入门到精通:用mod搭建高可维护项目架构
作为一门兼具安全性与工程化能力的语言,Rust的模块系统(mod)堪称代码组织的“黄金工具”。对于刚接触Rust的开发者而言,突破模块使用的瓶颈,不仅能让代码摆脱“一锅粥”的混乱状态,更能建立起符合工业级标准的开发思维。本文将从基础概念到实战落地,再到大型项目架构设计,完整拆解Rust模块化开发的全流程,让你快速掌握从“入门”到“精通”的核心要点。原创 2026-01-06 21:26:42 · 367 阅读 · 0 评论 -
Polars数据聚合与旋转实战教程
Polars 是一个用 Rust 编写的高性能数据处理库,用于 Python 和 R 等语言。它在处理大型数据集时能够提供高效的数据处理能力,并且具有类似于 Pandas 的数据处理接口,方便数据科学家和分析师使用。使用这些方法,可以在polar中有效地转换和汇总大型数据集,从而提高你的数据分析能力。无论是使用聚合列表的pivot函数,还是执行多个pivot以提高清晰度,这些策略都可以增强输出的可读性和可用性,特别是在处理大容量数据时。原创 2024-12-13 20:36:04 · 1573 阅读 · 0 评论 -
Rust 内置数据结构——BTreeMap应用教程
通过理解和有效地利用BTreeMap,你可以通过高效的分类数据管理和检索功能来增强Rust项目。原创 2024-12-09 15:12:15 · 1612 阅读 · 0 评论 -
Rust eyre 错误处理实战教程
`eyre`是一个用于 Rust 的错误处理库,它提供了方便、灵活且具有良好错误信息显示的功能。其主要目标是简化在 Rust 程序中处理错误的过程,尤其是在处理复杂的错误场景和嵌套的`Result`或`Option`类型时。与 Rust 标准库的错误处理相比,`eyre`提供了更丰富的上下文信息。例如,当发生错误时,它可以包含更多关于错误发生位置(如文件名、行号等)的详细信息,并且在报告错误时可以提供更友好的用户界面,使得开发者更容易理解和定位错误。原创 2024-11-27 20:24:56 · 1332 阅读 · 0 评论 -
Rust SQLx CLI 同步迁移数据库
上文我们介绍了SQLx及SQLite,并介绍了如何使用代码同步迁移数据库。本文介绍Sqlx cli 命令行工具,介绍如何安装、使用,利用其提供的命令实现数据表同步迁移。Java生态中有flyway, sqlx cli 功能类似,利用命令行工具可以和其他语言项目工程一起使用。数据库迁移是开发和重构应用程序数据库的过程,是应用程序开发过程的一部分。SQLx CLI是Rust crate SQLx的关联命令行实用程序,用于管理此迁移过程。原创 2024-11-26 21:00:11 · 2096 阅读 · 0 评论 -
Rust sqlx包访问sqlite数据库
SQLx是一个易于使用的Rust异步SQL crate。编译时检查查询:SQLx确保您的查询在编译时有效,从而减少运行时错误。异步支持:它可以与异步运行时(如Async -std、tokio和actix)无缝协作。跨平台:SQLx在任何支持Rust的地方编译。连接池:内置连接池,用于高效的数据库访问。您可以将SQLx用于各种数据库,包括PostgreSQL、MySQL、SQLite和MSSQL。SQLite是一个无服务器的嵌入式SQL数据库引擎。它直接读取和写入普通磁盘文件,使其轻量级和高效。原创 2024-11-26 20:07:44 · 2418 阅读 · 0 评论 -
rust宏系列教程-利用派生宏和属性宏增强struct功能
学以致用,在前面几篇博文详细介绍了如何自定义宏之后,本文结合实际应用场景给出有用示例。首先我们介绍了Rust结构体及过程宏,接着通过属性宏和派生宏示例展示如何动态生成代码,让你真正理解定义宏在编译时修改Rust结构体代码的价值和意义。希望对你有所启发,未来继续,一起rust。原创 2024-11-25 20:52:22 · 2001 阅读 · 0 评论 -
Rust 宏系列教程—自定义属性宏
本文完整实现了简单的属性宏,并采用声明与实现分离方式实现。如果你之前以及阅读本系列文章,应该不会感动很难懂。下面我们会继续更复杂的属性宏实现,来吧,一起学习rust!原创 2024-11-25 08:23:55 · 1057 阅读 · 0 评论 -
Rust中Tracing 应用指南
在Rust中,跟踪是由名为tracing 包的强大库提供的。这个包提供了实现框架,用于检测Rust程序,以收集结构化的、基于事件的诊断信息。与传统的日志记录不同,tracing旨在了解系统中一个事件或一系列事件的上下文,使其成为诊断复杂系统的强大工具。要开始在Rust中进行跟踪,首先需要将tracing 包添加到项目中。tracing包为不同级别的诊断信息提供了几个宏,包括debug!info!warn!和error!这些宏对应于不同级别的事件,可用于在适当级别记录信息。原创 2024-11-23 21:05:14 · 1678 阅读 · 0 评论 -
常用Rust日志处理工具教程
log包是Rust中日志API的事实标准,共有五个日志级别:error(最高优先级)、warn、info、debug和trace(最低优先级)。要记录一条消息,可以使用相应的日志marcos: error!warn!等。这些宏的行为就像println!一样并支持format!语法。也就是说,{}调用display, {:?}调用debug,{:#?}输出格式化debug信息。(稍后我们将看到一些示例。一个重要的注意事项是,log包只提供API,而不提供实现。你必须选择一个具体实现日志库。原创 2024-11-23 08:40:22 · 1843 阅读 · 0 评论 -
用Rust中byteorder包高效处理字节序列
在 Rust 中,byteorder是一个用于处理字节序的 crate ,字节序指的是多字节数据类型在内存中的存储顺序,主要分为大端序(Big-Endian)和小端序(Little-Endian)。大端序是将高位字节存于低地址,小端序则相反。byteordercrate 提供了方便的方法来处理不同字节序的数据,在网络编程、文件格式处理等场景中非常有用。原创 2024-11-20 20:10:54 · 1475 阅读 · 0 评论 -
Rust宏系列教程—实现复杂派生宏
();}"),if!continue;("{error:?}"),();if!})quote!至此,我们连续三篇博客详细讲解如何编写派生宏,首先解释基本派生宏理论及相关依赖包,然后从简单到复杂派生宏。希望你能耐心阅读并实现,一起rust!原创 2024-11-19 20:16:50 · 1546 阅读 · 0 评论 -
Rust宏系列教程—自定义派生宏
我们介绍了宏及其分类等基础知识,以及编写宏常用的依赖包等相关内容。在本节中,你将学习如何编写派生宏。我们通过实际示例由浅入深进行,让你逐步掌握自定义派生宏。原创 2024-11-19 16:07:38 · 1537 阅读 · 0 评论 -
精通Rust系统教程-过程宏入门
宏是Rust编程语言的重要组成部分,当你学习Rust语言时,很快就会遇到它们。Rust宏以最简单的方式让你在编译时执行一些代码。Rust宏几乎允许你做任何你想做的事情,以及你可以用它们做任何你想要的,该特性最常见的用例是编写生成其他代码的代码。总之,Rust宏非常强大,你必须要重视并掌握它。宏是一种将编译器的功能扩展到标准支持之外的方法。无论您是希望基于现有代码生成代码,还是希望以某种形式转换现有代码,宏都是您的首选工具。Rust官方描述如下:术语宏指的是Rust中的一系列特性。原创 2024-11-18 17:42:02 · 1768 阅读 · 0 评论 -
用Rust TypeMap安全存储多种类型数据
typemap crate 中的TypeMap是一个用于存储多种不同类型值的容器。它基于Rust的类型系统,通过键 - 类型关联的方式来存储和检索数据。本质上,它是一个高级的哈希表(HashMap),其中键是Rust的类型信息,值是对应的具体类型的数据。内部实现原理TypeMap内部使用了Any类型和类型标识符来实现这种动态的类型存储。Any类型允许存储任意类型的值,而类型标识符用于在获取数据时确定正确的类型。它利用了Rust。原创 2024-11-18 06:48:35 · 1893 阅读 · 0 评论 -
精通rust宏系列教程-调试过程宏
本文主要介绍过程宏的构建过程,如何调试、理解相关依赖包,syn, quote, proc-macro2 。有了这些基础知识,有助于理解并构建自定义过程宏。原创 2024-11-16 19:27:08 · 1698 阅读 · 0 评论 -
精通rust宏系列教程-入门篇
println!如果你已经尝试过Rust,你应该已经使用过一个宏println!这个宏允许您打印一行文本,并能够在文本字符串中插入变量。宏只是允许你发明自己的语法并编写代码生成更多的代码。这被称为元编程,支持语法糖,使你的代码更短,更容易使用你的库,甚至可以在rust中创建自己的DSL(领域特定语言)。宏的工作方式是匹配宏规则中定义的特定模式,将匹配的部分捕获为变量,然后展开以生成更多代码。如果你听不懂也没关系。让我们开始吧!原创 2024-11-14 20:59:17 · 1645 阅读 · 0 评论 -
用Tokio掌握Rust异步编程
Tokio 基于异步 I/O 模型。在传统的同步 I/O 中,当一个操作(如读取文件或进行网络请求)被发起时,程序会阻塞直到该操作完成。而 Tokio 的异步 I/O 允许程序在等待 I/O 操作完成的同时执行其他任务。异步编程主要应用有:web服务器、分布式数据库和网络服务等。Tokio在Rust中启用了async/await语法,这使得异步代码像同步代码一样易于编写和读取。它被设计为有效地处理网络和I/ o绑定操作,这就是为什么它非常适合Rust的原因。异步 vs 同步。原创 2024-11-13 17:41:26 · 1700 阅读 · 0 评论 -
Rust Struct 属性初始化
结构体是用户定义的数据类型,其中包含定义特定实例的字段。结构有助于实现更容易理解的抽象概念。本文介绍几种初始化结构体对象的方法,包括常规方法、Default特征、第三方包实现以及构建器模式。原创 2024-11-13 08:30:46 · 1675 阅读 · 0 评论 -
快速学习Serde包实现rust对象序列化
本文介绍了Rust中serde包较为全面的使用指南,可以帮助你更好理解如何使用Serde实现序列化。它是一个高度通用和强大的库,是Rust程序开发中必不可少的工具包。原创 2024-11-12 09:48:09 · 1563 阅读 · 0 评论 -
理解Rust 生命周期、所有权和借用机制
本文试图解释初学者都会遇到的一个概念Rust:它的“借用检查机制”。借用检查机制检查所有对数据的访问是否合法。检查所有的数据访问是否合法,可以让Rust避免安全问题。通过避免与编译器发生冲突,了解这个系统的工作原理至少可以加快开发时间。更重要的是,学会使用借用检查机制可以让你自信地构建更大的软件系统。原创 2024-11-08 16:23:35 · 1697 阅读 · 0 评论 -
Rust生成随机值实战应用
生成随机数、随机字符、符合一定分布的抽样值,是日常开发中经常遇到的场景。本文解释Rust中相关的工具包。并通过示例说明如何生成随机值。原创 2024-11-08 15:20:37 · 1201 阅读 · 0 评论 -
快速解锁Rust Slice特性
切片是Rust编程中不可或缺的工具,它提供了轻量级的方法高效操作集合中的数据部分。开发人员理解了切片的语法和应用场景,可以增强代码的可读性、性能和可维护性,充分解锁Rust强大生态系统的无限潜力。原创 2024-11-06 17:01:34 · 830 阅读 · 0 评论 -
Rust中三种方式使用环境变量
这只是在Rust中使用环境变量的三个基本示例。希望让对你学习rust有点帮助,一起rust!原创 2024-11-04 21:14:45 · 1589 阅读 · 0 评论 -
Rust常用属性及应用
在 Rust 中,属性(Attributes)是用于向编译器提供额外信息的元数据。这些信息可以改变程序的编译方式、提供警告或错误信息、进行条件编译等诸多功能。语法格式属性以[...](用于应用到整个 crate)或#[...](用于应用到模块、函数、结构体等项)的形式出现。例如:x: i32,y: i32,在这个例子中,是一个属性,它应用于Point结构体。这个属性告诉 Rust 编译器自动为Point结构体派生Debugtrait,这样就可以方便地使用{:?格式化输出结构体的内容。原创 2024-11-03 10:25:30 · 2024 阅读 · 0 评论 -
Rust 错误处理库: thiserror 和 anyhow
writeln!;writeln!}")?;Ok(())#[error]宏生成Display, #[from]宏处理from实现source()转换std::error::error。总之,我们已经探索了thiserror 和 anyhow库的独特特性,并讨论了每个库的优点。通过选择合适的工具,Rust开发人员可以大大简化错误处理并增强代码的可维护性。thiserror简化实现自定义错误类型,thiserror对于库开发来说是理想的,其中提供的宏对程序员非常友好。原创 2024-10-31 21:16:53 · 1933 阅读 · 0 评论 -
Rust线程构建安全并发应用
Rust中的线程提供了一种在应用程序中实现并发执行的强大方法。然而,确保线程安全对于避免数据竞争和维护正确的程序行为至关重要。通过理解线程安全概念,使用Mutex等同步原语,并利用无锁场景的原子类型,你可以在Rust中安全高效地构建并发应用程序。确保安全并发性的另一种流行的方法是消息传递,其中线程或参与者通过相互发送包含数据的消息进行通信。Go语言哲学:“不要通过共享内存进行通信,采用消息通信代替共享内存。” Rust的标准库也提供了Channel的实现,它支持数据通过通道从一个线程发送到另一个线程。原创 2024-10-30 08:19:25 · 740 阅读 · 0 评论 -
Rust 问号(?)操作符简化错误处理
?操作符在Rust中是一个强大的功能,它能简化错误处理,使代码更干净,更易于维护。它支持错误的快速传播,并与Rust健壮的错误处理范式无缝集成。通过理解和利用?操作符,我们可以编写更高效和可读的Rust代码。原创 2024-10-24 15:44:28 · 1460 阅读 · 0 评论
分享