Dvorak
Dvorak

Dvorak Chen

Rust


Rust 和经典语言在习惯上的差异

本文介绍了作者在学习Rust编程语言过程中遇到的一些挑战。首先,文章讨论了Rust的所有权模型、借用检查器和并发机制带来的复杂性,以及如何通过单元结构体(struct D;)和实现trait来提供更好的抽象。接着,文章重点描述了Rust中常见的“包装”(wrap)模式,例如使用Box<dyn trait>来进行动态分配,Arc<Mutex<Box<dyn D>>>来处理多线程共享数据,并解释了这些包装的原因和必要性。最后,作者提到可以使用type关键字定义自定义类型名称以简化复杂的嵌套结构。文章总结了Rust编程中一些基础但重要的概念,尽管这些内容在熟练后看起来简单,但对于初学者来说可能需要较长时间适应。--DeepSeek

Rust memory-management Ownership System Smart Pointers Concurrency Thread Safety

Leptos - 撸一只赛博猫猫

这篇文章展示了如何使用 Leptos 框架结合 Rust 语言来创建一个互动的赛博猫动画,完全摒弃了传统的 JavaScript 开发方式。通过借助 crates 提供的 BOM API 和时间函数库,作者实现了从猫猫不同动作状态到用户交互的全部逻辑。文章详细介绍了如何利用数组存储猫猫的不同动作字符画,并通过 Interval 函数实现周期性切换来模拟尾巴摇动的效果。此外,作者还探讨了如何在组件卸载时清理 Interval 定时器以避免资源泄漏的问题。最终,这只用 HTML 渲染界面、Rust 控制逻辑的赛博猫不仅能够在点击时发出“喵喵叫”,还能在鼠标按住时发出咕噜声,展现出令人惊喜的互动效果。项目代码已开源,感兴趣的读者可以前往 GitHub 仓库查看详细实现。通过这篇文章,作者不仅展示了 Rust 在前端开发中的潜力,还提出了一个问题:你是否也想尝试用 Rust 来构建自己的 Web 应用,并创造更多有趣的效果?不妨从这篇博客开始,探索 Leptos 的无限可能!--DeepSeek

Rust Leptos gloo Cyber Cat Interval MouseEvent

从实现 Iterator 来窥探 Rust

这篇文章介绍了如何为一个自定义的`Nums`结构体实现迭代器功能。首先,`Nums`结构体包含一个长度为10的整数数组,并通过`new()`方法初始化。接着,`iter()`方法返回一个`NumsIter`迭代器,该迭代器持有对`Nums`实例的引用。为了确保引用的有效性,`NumsIter`带有生命周期标注`'a`。实现`Iterator` trait时,指定了返回类型为`usize`,并在`next()`方法中实现了遍历逻辑:当索引在有效范围内时返回当前元素,否则返回`None`。这样,用户可以通过标准的`for`循环轻松遍历`Nums`实例的值。--DeepSeek

Rust Iterator Pattern Lifetime Management Ownership and Borrowing Memory Safety Code Structure

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

在 Rust 中使用 Actor 模型

这篇博文探讨了在 Rust 中使用 Actor 模型来解决多线程共享变量的线程安全问题。文章首先介绍了在 Rust 中通过 `Mutex` 和 `HashMap` 来管理多个客户端连接的方式,但指出这种做法会导致阻塞问题,因为 `Mutex` 锁住 `HashMap` 期间其他线程无法访问资源。作者尝试优化代码以绕过生命周期检查,但这种方法不安全且不符合 Rust 的最佳实践。 随后,文章引入了 Actor 模型作为解决方案。每个客户端被建模为一个独立的 Actor,持有自己的 `TcpStream` 和消息队列(Inbox),通过消息传递来触发行为,从而避免了全局变量和原始指针的使用。这种设计不仅提高了代码的安全性和可维护性,还提供了一个干净且高效的多线程解决方案。 文章最后总结了 Actor 模型的优势,并鼓励读者探索其在类似场景中的应用。作者提供了示例代码仓库链接,方便读者进一步学习和实践。--DeepSeek

Rust Concurrency Thread Safety Mutex Actor Model TcpStream