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: “懒人”友好的 Web 框架
Cot 是一个类似 Django 的“懒人”友好的 Rust Web 框架,内置了大量功能,追求开箱即用的开发体验。项目作者认为目前 Rust 生态中缺乏易用且强大的 Web 框架,所以基于axum、sea-query、tower、serde等项目构建了这个项目。
主要特性:
- 内置身份验证
- 会话管理
- 管理面板
- 模板系统
- 自带 ORM,支持自动生成数据库迁移(这是其他 ORM 如 SeaORM 和 Diesel 所不具备的)
注意:还处于早期开发阶段,尚未达到生产可用水平。但是项目团队计划通过频繁更新快速完善功能
官方网站:https://cot.rs/
Github 仓库:https://github.com/cot-rs/cot
Miguel Ojeda 在 FOSDEM 2025 上关于 Rust-for-Linux 项目的演讲
Miguel Ojeda 是 Rust-for-Linux 项目的维护者,他在 FOSDEM 2025 发表了关于该项目的演讲。简单总结如下:
-
项目背景:
- Rust-for-Linux 项目旨在为 Linux 内核添加 Rust 语言支持
- 长期目标是让内核维护者能够自由选择使用C或Rust
- 项目的核心优势在于提供更多的代码安全性保证和开发信心
-
历史发展:
-
2013 年出现最早的概念验证 rust.ko
-
2019 年创建 Rust-for-Linux GitHub 组织
-
2022 年 Rust 支持正式合并到 Linux 6.1 LTS 版本
-
-
未来展望:
-
多位内核开发者对项目持积极态度
-
2025 年可能会在 GPU 驱动方面有重大突破
-
主要挑战包括:
- Rust 语言的学习难度
- GCC 支持的需求
- 代码审查的复杂性
-
-
社区反应:
-
大多数开发者认为 Rust 融入 Linux 内核是不可避免的趋势
-
部分开发者担心学习曲线陡峭
-
一些开发者对Rust编程体验非常认可,认为能减少常见 bug
-
原文地址:https://lwn.net/SubscriberLink/1007921/9020dbb12585d48f/
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
评论区
写评论还没有评论