Motion - Terminal v1.0

Tokio 异步环境下的 Actor 模式设计指南

在 Tokio 的生态系统中,“Actor 模式”(经常被称为“Manager 模式”或简单的“任务+通道”模式)持有既务实又批判的看法。与其将其视为一种强制性的架构(如在 Erlang 或 Akka 中),Tokio 社区倾向于将其视为一种管理共享资源和处理并发状态的特定设计模式,通常直接使用 T...

READ MORE

Rust 编写任务管理器

这篇文档描述了如何在使用 Rust 以及 Tokio 编写一个健壮的任务管理器 TaskManager。它具有如下特征: ✅ 异步任务管理:基于 Tokio 的异步运行时 ✅ 优雅关闭:支持取消令牌(CancellationToken)和超时控制 ✅ 自动重启:配置化的重试机制与...

READ MORE

Rust异步编程之事件驱动编程模型

事件驱动编程(Event-Driven Programming) 是一种旨在简化复杂软件工程、提高代码可维护性的编程模型,特别是在处理复杂的网络 IO 和状态管理时,它比直接使用底层的 IO 多路复用机制(如 Epoll)更为高效。 1. 为什么需要事件驱动编程? 直接使用底层...

READ MORE

Rust 中的 Epoll 和 io_using

Epoll • 1. 基本定义与地位     ◦ 同步 IO 多路复用模型:虽然常用于异步编程,但本质上仍属于同步模型,。     ◦ 事件通知机制:一种高效的内核事件处理机制,用于管理大规模的网络连接...

READ MORE

Rust 异步编程与 IO 模型

理解 Rust 异步编程是一个自下而上的过程,其核心基石在于对 IO 模型 的理解。只有掌握了 IO 模型,才能明白异步编程模型是如何在其基础上构建并运作的。 以下是基于提供的源码对 IO 核心概念及模型的详细解析: 1. 核心概念辨析 在讨论 IO 时,经常会混淆同步/异步与阻塞...

READ MORE

我用 Rust 写了一个 Hello World

入职第一天,老板要试一下我的水平,于是给我布置了一个任务,写一个 Hello World吧,但是公司用的是 Rust。 我心想,这不是分分钟的事情嘛,很快程序就写好了: fn main() { println!("Hello World!") }fn main() { p...

READ MORE

说明白 Rust 中的泛型: 泛型是一种多态

泛型(Generics) 这一概念比较古老,从 80 年代末的 Ada 开始一直到现在成为了静态类型语言的标配,包括 Haskell、C++、Java、Go、Rust。而这系列文章主要描述 Rust 中的泛型,对其他语言并不会过多涉及。 泛型是一种多态 泛型是一种多态(Polym...

READ MORE

Rust 重构 Rust:枚举和模式匹配

前言 代码的质量很多时候和语言无关,比如你用 C 也可以写出 OOP 风格的代码,用工程化的 Java 也可以写出难以维护难看要死的代码,被嘲讽几十年的 PHP 也可以产出 Laravel 这样优雅的框架。 但是不同的语言遵循不同的编程范式和风格,用写 Java 的习惯来编写 Go 或者...

READ MORE

Rust 中 1GB 内存如何下载 100G 的文件

话说我的公司只是一家名不见经传的小公司,这家公司的老板 John 又特别的抠搜。买的服务器的配置啊,那是低的可怜,云厂商大促的时候, 99 包年,内存只有可怜的 1GB。 但是 John 又志向远大,想要做一个网络文件的爬虫,爬取网络上形形色色的文件,比如某国的一些影视作品。这时候他就...

READ MORE

Rust 重写 40 多年前的 Ping 命令

这篇文章会介绍如何使用 Rust 来显示 Linux 中的 ping 命令。先介绍 ping 命令的使用,然后介绍 ICMP 协议,最后用 Rust 来编写一个基础版本的 ping 命令。 ping 命令不为人知的历史 在工作中你一定问过或者听过这样的问题:怎么 ping 不通了?是的,...

READ MORE