Dvorak
Dvorak

Dvorak Chen

rust-programming


从一段代码来学习 Rust - 1

这篇文章主要介绍了Rust语言中生命周期(lifetime)的基本概念及其在实际代码中的应用。作者从自身学习经历出发,探讨了生命周期系统的核心思想:引用必须在有效范围内使用,并通过注解明确引用的存活时间。文中详细分析了`'static`生命周期的特殊含义,指出其不仅表示全局生命周期,还常用于表达对所有权的要求。此外,文章深入探讨了`async_trait`中的生命周期约束关系,通过具体代码示例和`where`子句的分析,阐明了生命周期参数之间的相互限制。最终,作者提到这只是第一部分内容,后续将继续介绍`Pin`、`Future`等高级主题,为读者留下悬念。--DeepSeek

Rust rust-programming Pin Lifetimes Future Static Lifetimes

如何编写易维护的代码 - Rust 实现-1

如何编写易维护的代码是一个关键问题,本文通过Rust实现探讨了这一主题,强调了函数式思想的重要性。在理想情况下,使用纯函数可以确保输出仅依赖于输入,避免外部因素带来的不确定性。然而,在实际应用中,许多函数依赖于外部资源,如数据库或网络请求,这些依赖会影响代码的维护性和测试性。为了解决这个问题,本文引入了依赖注入的概念,即将所需的外部依赖作为参数传递给函数,而不是在函数内部获取。这样可以使函数的行为更加可预测,并且便于在不同环境中配置和测试。此外,将多个依赖抽象到一个结构体中,可以进一步提高代码的整洁性和可维护性。本文还展示了如何通过将依赖注入到结构体中,使方法调用更简洁,同时保持其行为的纯粹性。这种方法不仅使代码更易于测试,还能更轻松地定位错误。如果你想知道如何在Rust中实现易维护的代码,或者如何利用依赖注入来提高代码质量,这篇文章将为你提供一些启发。那么,你是否正在考虑如何让自己的代码更加容易维护和测试呢?--DeepSeek

Rust rust-programming Functional Programming Pure Functions Dependency Injection Structs in Rust

Rust 编写裸机代码使用链接器脚本

文章介绍了如何通过自定义链接器脚本来控制程序内存布局,并在Rust代码中访问这些内存区域。作者展示了如何在链接器脚本中定义各段(如.text、.rodata、.data和.bss)的起始和结束符号,以及如何在Rust代码中使用extern "C"声明这些外部符号。通过示例代码,文章演示了如何打印特定内存区域的地址范围,并验证了全局变量的位置确实在定义的.bss段内。此外,文章还讨论了几个关键点:.bss段用于存储可变数据,局部变量不会出现在.bss段中,Rust会优化未使用的变量等。--DeepSeek

Rust RISC-V memory-management linker-script rust-programming section-alignment symbol-table print-implementation

How to fix some issues while using "diesel"

本文介绍了解决使用 Rust 的 ORM 框架 **diesel** 时遇到的一些常见问题及其解决方案。在使用 `diesel_cli` 时可能会出现缺少 DLL 文件的问题,例如 `api-ms-win-crt-locale-l1-1-0.dll` 等,这些文件可以通过复制系统目录中的相关文件到 `~/.cargo/bin` 来解决。此外,如果使用 SQLite 数据库,还可能遇到缺少 `sqlite3.dll` 的问题,此时可以从指定链接下载并解压后将文件放置在相应位置。 另一个常见问题是缺失 `sqlite3.lib` 文件,这会导致编译错误。解决方案包括从 SQLite 官方网站下载相关 ZIP 文件,并通过命令行工具生成所需的 `.lib` 文件,然后将其移动到 Rust 工具链的指定目录中。 文章详细介绍了每一步的操作方法,并提供了需要注意的事项,例如根据 Rust 版本(稳定版或 nightly)调整路径。最后,文章提出了一些问题以引导读者进一步思考和探索如何解决类似的问题,确保在使用 **diesel** 时能够顺利运行。--DeepSeek

Rust rust-programming Diesel _DLLs Diesel ORM DLL Files

Leptos 初探 - 序言

这篇文章介绍了基于Rust的前端框架Leptos的一些特性和开发经验。文章提到Leptos将代码编译为WASM在浏览器中运行,因此需要选择支持WASM环境的Crate(如`reqwest`用于HTTP请求),并使用模拟JavaScript API的Crate(如`gloo`)来实现特定功能。文中还详细讨论了Rust语言的特点及其对Leptos开发的影响,包括严格的语法规则、所有权规则以及如何通过引用计数(`Rc`)解决多个事件处理程序共享资源的问题。文章最后提到未来可能会继续编写更多关于Leptos的教程内容。--DeepSeek

Rust Leptos rust-programming web development Component Framework Ownership Rules

  • 1