Diesel 2.0.0 发布
Diesel 是一个安全的、可扩展的 ORM 和 Rust 查询构建器。其借助 Rust 的语言特性,在不牺牲性能的前提下,消除了运行时错误。
其支持的数据库有:
- PostgreSQL
- MySQL
- SQLite
本版本是超过 135 人历时 3 年多开发的结果。自上一个 RC 版本以来,合并了以下细微更改:
- 从 v0.3 开始支持日期/时间类型
- 对 rustc 生成的错误消息的一些可选的修正
- 对
Selectable
这个 derive 的一些改进 - 将 extensive join 的编译时间减少了约 4 倍的修复
详细内容请参考 CHANGELOG
Fearless cargo update
Fearless Development 是 Rust 的一个关键词,"If it compiles, it works"。
但是在 Rust 的整套开发流程中,有一个环节并不是让人 fearless,也就是 cargo update
,即升级项目的依赖。
绝大多数情况下,cargo update
都没有什么后果,伴随着依赖的优化,通常还能带来一定的性能提升。但是在某些场景下,由于 API 的变化(函数签名,auto-trait 等),cargo update
会造成整个项目编译不通过的情况,此时要么选择回退版本,要么选择拥抱新的 breaking change ...... 无论如何都很棘手。
但是,借助 cargo-semver-check 这个工具,可以提早发现 cargo update
潜在的依赖问题,从而避免上述一系列问题,提升开发体验。感兴趣的可以参考其 Github 主页 和 原文。
使用 Rust 重写 blog 构建工具
Jonas Hietala 九年来,一直用 Hakyll 作为静态站点的生成工具,如今,他终于下定决心,打算转向自己用 Rust 亲手编写的自定义站点生成器,并解决以下几点问题:
- 越来越慢的速度。Hakyll 的编译速度实再不能令人满意;
- 外部依赖项。虽然站点生成器本身是用 Haskell 编写的,但除了众多 Haskell 库之外,其中还包含其他依赖项,管理和更新十分烦人,无法专心于博客内容;
- 设置问题。跟大量依赖项相关,作者的博客网站有时候会宕机,必须得花时间调试和修复。
作者原先很担心,例如模板引擎、高亮显示的功能无法在 Rust 中实现,但事实证明,每一个功能都有理想的工具辅助实现:
- 用 pulldown-cmark 来解析 Markdown;
- 用 syntect 实现语法高亮,能够支持 Sublime Text 语法;
- 用 yaml-front-matter 解析帖子中的元数据;
- 用 grass 作为纯 Rust 中的 Sass 编译器;
- 用 axum 创建负责在本地托管站点的静态文件服务器;
- 用 hotwatch 监控文件变更,这样就能在文件内容变化时更新页面;
- 用 scraper 解析生成的 html。用于某些测试和特定转换;
- 用 rust-s3 将生成的站点上传至 S3 存储端。
最终作者实现了一个不错的 blog 工具,可以参考 Github 仓库地址,项目的实现细节可以参考原文介绍
-- From 日报小组 RustPlumber
社区学习交流平台订阅:
评论区
写评论还没有评论