从碎片化到标准化:cargo-bp 如何重构 Rust 开发逻辑

从碎片化到标准化:cargo-bp 如何重构 Rust 开发逻辑

Rust 社区一直有极小标准库这一设计哲学,这导致生态碎片化严重。在这一设计哲学下,所有业务能力、工程能力全部交给社区 crate 实现,看似灵活的设计,实则给开发者埋下了巨大的隐性成本。而 cargo-bp 就是 Rust 社区为了解决这一痛点所进行的一次尝试。

cargo-bp 是什么?

cargo-bp 的 bp 是 Battery Pack,电池组的含义。它的核心思路很简单:把 Rust 项目中大家都会重复配置的东西,打包成可复用电池组。例如:CLI 项目电池组、CI/CD 电池组、错误处理电池组、日志电池组、Web 电池组等等。

开发者不再需要进行繁琐的配置,由一个个电池组来提供最佳实践,开发者只需要:

shell 复制代码
# 添加 cli 电池组
cargo bp add cli

众所周知,Rust 社区已经有大量的 crates 成为了非官方的事实标准库,如 tracing、serde 等等,电池组的作用在于让这些隐性标准库显性化

安装

cargo-bp 支持两种主流的安装方式:

shell 复制代码
cargo install cargo-bp
# or
cargo binstall cargo-bp

安装完成后,可配置 shell 自动补全,提升操作效率:

shell 复制代码
# zsh 环境
source <(cargo bp completions zsh)
# bash 环境
source <(cargo bp completions bash)
# fish 环境
source <(cargo bp completions fish)

使用示例

首先,我们可以通过下面的命令获取到当前有哪些电池组:

shell 复制代码
cargo bp list

电池组大致有两种使用方式,第一种是通过电池组内置的项目模板来进行初始化项目:

shell 复制代码
cargo bp new cli --name cli-demo

上面这条命令的含义是使用 cli 电池组进行初始化项目,项目名称为 cli-demo。

初始化项目后,如下所示:

plaintext 复制代码
.
├── build.rs
├── Cargo.toml
├── src
│   └── main.rs
└── tests
    ├── cli.rs
    └── snapshots
        └── cli__help.txt

除了项目模板初始化的代码外,最主要的是看 battery-pack.toml 这个文件,它包含了与电池组所有的相关信息。

第二种使用电池组的方式是在已有项目中添加电池组:

shell 复制代码
cargo new cli-demo
cd cli-demo
cargo bp add cli

它会为你添加上电池组的相关依赖。除此之外,如果需要更新依赖,可以通过更新电池组的方式进行:

shell 复制代码
cargo bp sync

如果需要移除电池组,可以通过 remove 命令进行:

shell 复制代码
cargo bp remove cli

维护自己的电池组

除了官方提供的电池组外,我们还可以维护自己的电池组,这里我们依旧通过 cargo-bp 来初始化电池组模板:

shell 复制代码
cargo bp new battery-pack --name my-battery-pack

这里我不打算细说,推荐你直接看官方文档了解。

结语

cargo-bp 仍处于项目早期阶段,这篇文章主要目的是帮助读者了解下 Rust 社区的一些前沿动态。虽然项目的迭代,电池组这一概念会将会给 Rust 社区带来巨大的变化,填补官方极小标准库带来的问题,逐渐形成形成标准库+电池组双生态体系。

从生态发展逻辑来看,cargo-bp 绝非昙花一现的工具,而是 Rust 生态进化的必然产物。它没有颠覆 Rust 极小标准库这一设计哲学,而是以轻量化、无侵入地的方式补齐了 Rust 在工程化方面的短板。

相关推荐
锋行天下1 小时前
一句mysql复杂查询搞崩一个壮汉
后端·mysql·go
不肯过江东丶2 小时前
大聪明教你学Java | Spring AI Lab:一个让你 3 分钟接入 AI 对话能力的 Spring Boot 工具箱
spring boot·后端
腾讯云云开发2 小时前
CloudBase把一套完整的 Vibe Coding 平台开源了
后端·全栈·vibecoding
ZTStory2 小时前
mise 一款可以在项目中独立管理语言、环境变量和任务的工具
前端·rust·命令行
咸甜适中2 小时前
rust语言学习笔记Trait(十一)Deref、DerefMut(解引用)
笔记·学习·rust
lulu12165440782 小时前
Claude Code SpringBoot技能体系架构设计与演进
java·人工智能·spring boot·后端·ai编程
心之语歌2 小时前
Vert.x 高性能物联网 MQTT 网关构建指南
后端
Slice_cy2 小时前
从前端视角理解后端分层:基于 Koa 自研一个约定式 Node.js 服务框架
后端
DolphinDB2 小时前
基于 DolphinDB 搭建微服务的 SpringBoot 项目
后端·算法