eserde : 更友好的序列化/反序列化框架
众所周知,serde 是 Rust 生态中的一个非常强大的序列化/反序列化框架。今天介绍的这个 eserde 是由 Mainmatter 开发的,它在 serde 之上构建,旨在提供更好的错误处理。serde 在反序列化的时候,遇到第一个错误就会停止解析,而 eserde 能够一次性报告多个错误,可以大大节省调试时间,减少 API 交互次数。
下面是一个示例:
#[derive(Debug, eserde::Deserialize)]
// ^^^^^^^^^^^^^^^^^^^
// Using `eserde::Deserialize`
// instead of `serde::Deserialize`!
struct Package {
version: Version,
source: String,
}
#[derive(Debug, eserde::Deserialize)]
struct Version {
major: u32,
minor: u32,
patch: u32,
}
let payload = r#"
{
"version": {
"major": 1,
"minor": "2"
},
"source": null
}"#;
let errors = eserde::json::from_str::<Package>(&payload).unwrap_err();
// ^^^^^^^^^^^^
// We're not using `serde_json` directly here!
assert_eq!(
errors.to_string(),
r#"Something went wrong during deserialization:
- version.minor: invalid type: string "2", expected u32 at line 5 column 24
- version: missing field `patch`
- source: invalid type: null, expected a string at line 7 column 22
"#
);
可以看出,eserde 一次性给出了 3 个错误消息,分别是:属性缺失、属性值类型错误、属性值缺失。这个体验确实是很好的。
原文地址:https://mainmatter.com/blog/2025/02/13/eserde/
Cot 是一个类似 Django 的“懒人”友好的 Rust Web 框架,内置了大量功能,追求开箱即用的开发体验。项目作者认为目前 Rust 生态中缺乏易用且强大的 Web 框架,所以基于axum、sea-query、tower、serde等项目构建了这个项目。
主要特性:
注意:还处于早期开发阶段,尚未达到生产可用水平。但是项目团队计划通过频繁更新快速完善功能
官方网站:https://cot.rs/
Github 仓库:https://github.com/cot-rs/cot
Miguel Ojeda 是 Rust-for-Linux 项目的维护者,他在 FOSDEM 2025 发表了关于该项目的演讲。简单总结如下:
项目背景:
历史发展:
2013 年出现最早的概念验证 rust.ko
2019 年创建 Rust-for-Linux GitHub 组织
2022 年 Rust 支持正式合并到 Linux 6.1 LTS 版本
未来展望:
多位内核开发者对项目持积极态度
2025 年可能会在 GPU 驱动方面有重大突破
主要挑战包括:
社区反应:
大多数开发者认为 Rust 融入 Linux 内核是不可避免的趋势
部分开发者担心学习曲线陡峭
一些开发者对Rust编程体验非常认可,认为能减少常见 bug
原文地址:https://lwn.net/SubscriberLink/1007921/9020dbb12585d48f/
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。