自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 Rust Waker 与唤醒机制:异步任务的 “唤醒桥梁” 与底层逻辑解析

Rust 的 Waker 封装在std::task::Waker中,它并非具体的实现,而是一套 “唤醒能力” 的抽象 Trait。其设计意图是 “解耦任务与事件源”—— 任务无需关心事件源的具体类型(如 I/O、定时器),只需提供 Waker 作为 “唤醒回调”;事件源无需关心任务的具体逻辑,只需在事件完成时调用 Waker 的唤醒方法。std::task::Waker的核心方法简化后如下(聚焦关键逻辑):// 内部封装:指向唤醒逻辑的Trait Object(轻量级间接层)

2025-10-30 23:55:50 667

原创 Rust Poll 机制与状态机转换:异步非阻塞的底层驱动逻辑与工程化实践

Rust 的 Poll 机制封装在std::task::Poll枚举中,它是异步任务与运行时之间的 “通信协议”—— 任务通过 Poll 的返回值告诉运行时 “当前是否就绪”,运行时则根据该结果决定是否继续调度该任务。为直观展示 Poll 机制与状态机的协同,我们将自定义一个 “异步延迟任务”(类似tokio::time::sleep),手动实现Future trait,定义状态机,并在 tokio 运行时中运行。该任务的核心逻辑是:“等待指定时间后,返回Poll::Ready(())”。

2025-10-30 23:48:41 637

原创 Serde 的零成本抽象设计:Rust 序列化生态的性能与抽象平衡艺术

Serde 的核心是两个 Trait:Serialize(序列化)与Deserialize(反序列化),// 关联类型:序列化器(如JsonSerializer、BincodeSerializer)where// 泛型约束:序列化器需实现Serializer Trait它们通过 “关联类型 + 泛型参数” 的设计,在提供统一接口的同时,确保静态派发与编译期优化。id: u64,

2025-10-30 23:43:11 805

原创 Rust 方法与关联函数:实例与类型的权责划分及工程化实践

要区分 Rust 中的方法与关联函数,核心判断标准是 “是否依赖实例状态” 与 “是否包含self参数”—— 方法必须通过实例调用且第一个参数为self(或其变体),关联函数通过类型调用且无self参数,二者在语法、语义、用途上有明确边界。维度方法(Method)关联函数(Associated Function)调用方式实例调用(instance.method())类型调用(Type::function())self 参数必须包含(self/&self/&mut self)无 self 参数。

2025-10-30 23:31:29 558

原创 Rust 表达式与语句的区别:从语法差异到工程化实践

是否有返回值。表达式是 “产生值的计算单元”,可参与赋值、作为函数参数或返回值;语句是 “执行动作的代码单元”,无返回值(或说返回 “空值”()),仅用于触发副作用(如变量声明、打印输出)。// 1. 变量声明语句:定义变量x,无返回值let x = 5;// 5是表达式(值为5),但let x = ...是声明语句,无返回值// 错误:无法将声明语句的“结果”赋值给其他变量(因为声明语句无值)// 编译错误:expected expression, found statement (`let`)

2025-10-30 23:22:30 996

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除