【Rust日报】2023-03-30 修改 Cargo 以更好地支持 Docker 层缓存

项目:garde

garde 是对 validator crate 的重写。

全面重写的原因在于 validator 在底层实现上存在一些问题。它使用普通函数来实现其验证规则,这意味着很难将这些规则用于自定义新类型和第三方 crate 类型之上。

这项工作是为了响应 validator 作者对维护的帮助呼吁而开始的,TA 也多次表达了对全面重写的渴望。

use garde::{Validate, Valid};

#[derive(Validate)]
struct User<'a> {
    #[garde(ascii, length(min=3, max=25))]
    username: &'a str,
    #[garde(length(min=15))]
    password: &'a str,
}

let user = User {
    username: "test",
    password: "not_a_very_good_password",
};

if let Err(e) = user.validate(&()) {
    println!("invalid user: {e}");
}

crates.io - garde: https://crates.io/crates/garde

github - jprochazk/garde: https://github.com/jprochazk/garde

文章:Better support of Docker layer caching in Cargo

目前,对于 Cargo 项目来说,定义 Dockerfile 并跳过在任何源代码更改后重新构建依赖项并不容易。这意味着每个 Cargo 项目的 Docker 构建可能会非常缓慢,并且无法充分利用 Docker 层缓存。

这篇文章对 cargo build --dependencies-only 的动机,现有解决方法,先前的技术和可能的解决方案进行总结。原问题关注“提供一个Cargo命令来构建项目依赖项”,但并没有充分描述主要问题。而文中将其关注点变更为“修改 Cargo 以更好地支持 Docker 层缓存” 进行了深入的讨论。

Article - Better support of Docker layer caching in Cargo: https://hackmd.io/jgkoQ24YRW6i0xWd73S64A

Exploring the problem of faster Cargo Docker builds: https://www.reddit.com/r/rust/comments/126xeyx/exploring_the_problem_of_faster_cargo_docker/

This Week In Rust 488

新一期的 Rust 周报速递发布,快来看看有哪些内容你曾经关注过 :)

This Week in Rust 488: https://this-week-in-rust.org/blog/2023/03/29/this-week-in-rust-488/


From 日报小组 PsiACE

社区学习交流平台订阅:

  • Rust.cc 论坛:支持 rss

  • 微信公众号:Rust 语言中文社区

你可能感兴趣的:(rust,docker,缓存,开发语言,后端)