Dvorak
Dvorak

Dvorak Chen

Rust


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

本文介绍了 Rust 和 C# 在编程习惯上的差异。首先介绍了 Rust 中的所有权概念,即变量持有它的值的所有权、变量赋值给别的变量会转移所有权、变量不能使用它没有持有所有权的值。这种概念带来的好处是严格限制了值的生命周期,为编译器知道在何处释放它提供了基础。其次,本文介绍了 Rust 中的抽象,即单元结构体的使用方法,它不定义任何的属性,可以用 `impl` 块给他定义方法,调用的时候单元结构体的名字提供了抽象。最后,本文介绍了在 Rust 中经常出现的嵌套泛型的写法,这种写法是为了实现动态分配,而其他的,如 `Mute<T>` 和 `Arc<T>` 是为了在多线程中共享数据。在 Rust 中必须要习惯这种 **wrap** 写法。--GPT 4

Rust

Leptos - 撸一只赛博猫猫

本文介绍了使用Leptos和Rust语言,替代Javascript,编写一个可爱的赛博猫猫动画的过程。文章首先介绍了一些有用的crates,如console_log、gloo和js-sys,它们分别提供了打印输出、大量BOM调用的API和时间库功能。然后,作者详细描述了如何使用HTML和Rust编写的逻辑代码,包括事件监听和类似Javascript的Interval时间函数,来创建一个可交互的赛博猫猫动画。此外,文章还详细解释了如何使用Interval时间函数和数组存储的字符画,来实现猫猫摇尾巴的动画效果。最后,作者提到了如何使用on_cleanup函数,在组件清理的时候取消Interval函数,以及如何在组件卸载的时候清理Interval。那么,如何使用Rust和Leptos来创建自己的动画呢?你会尝试使用这些方法和技巧来创建自己的项目吗?--GPT 4

Rust

从实现 Iterator 来窥探 Rust

本文详细介绍了如何在Rust中实现Iterator trait,以支持for in遍历。首先,我们定义了一个简单的struct,然后实现了一个iter()方法,将其转换为另一个实现了Iterator trait的结构。接下来,我们探讨了为何不直接在Nums上实现Iterator,以及Rust特有的生命周期标注的概念。我们还解释了如何在NumsIter结构中使用生命周期标注,以保证在借用Nums的时间内Nums都是存在的。最后,我们实现了Iterator trait,并给出了完整的代码示例。这篇文章提供了一个深入理解Rust中Iterator实现和生命周期标注的好机会。那么,你是否已经理解了如何在Rust中实现Iterator?你是否理解了生命周期标注的作用及其在Rust中的重要性?--GPT 4

Rust

Leptos 初探 - 序言

Leptos是一个用Rust开发的全栈Web框架,其写法类似于React,但实现机制却大相径庭。Leptos采用最小粒度更新的方式,避免了虚拟DOM的处理,性能上优于React。然而,由于Rust语言的学习难度,Leptos的普及可能会受到一定限制。此外,Leptos的更新机制依赖于闭包,而Rust严苛的语法规则可能会给开发者带来一些挑战。例如,Rust的所有权规则需要通过`Rc`进行引用计数来解决。最后,Leptos的代码最终会编译到浏览器的WASM环境中运行,因此不是所有的Rust crate都能够正常运行,需要挑选能够在WASM中使用的crate。这篇文章对Leptos的使用进行了详细的介绍,对于想要了解和使用Leptos的开发者来说,具有一定的参考价值。那么,你是否已经准备好接受Leptos的挑战,使用Rust开发你的Web应用呢?--GPT 4

Rust Leptos

在 Rust 中使用 Actor 模型

在本篇博客中,我们探讨了在Rust编程语言中如何使用Actor模型来解决多线程共享变量的线程安全问题。文章首先介绍了Rust中使用`Mutex`锁来实现线程安全的基本方法,然后通过实际案例展示了在多线程通讯功能中,使用`Mutex`锁可能导致的问题,例如长时间阻塞等。为了解决这个问题,文章尝试了使用`TcpStream`引用来绕过生命周期检查的方法,但这种方法存在一定的不安全性。 然后,文章引入了Actor模型作为解决方案。Actor模型是一种并发计算模型,由许多独立的并发实体组成,每个实体都是一个Actor。每个Actor都有自己的状态和行为,Actor之间通过消息传递。在这个模型中,每个客户端都成为一个Actor,分别持有自己的`TcpStream`,无论是向这个`TcpStream`发送还是监听,都由持有这个`TcpStream`的Actor去执行,而执行的时机就通过消息(Message)来触发。这种方法避免了全局变量和原始指针的使用,同时也没有`Mutex`锁,看起来更加干净清爽。 那么,Actor模型是否能完全解决多线程下的线程安全问题呢?如何在实际中更有效地使用Actor模型?这些都是值得我们进一步探讨的问题。--GPT 4

Rust