SuperAPI AI 工具集

m11-ecosystem

编程与开发

查看项目

更新于 10-15 11:32

技能介绍

用途

该技能面向 Rust 开发中与 crate 集成和生态选型相关的问题,触发关键词包括 E0425、E0433、E0603、crate、cargo、dependency、feature flag、workspace、which crate to use 等。核心问题是:针对当前任务应该选择哪个 crate,以及如何把它集成进项目。

主要能力

依赖现状自动注入

技能会尝试读取项目中的 Cargo.toml,自动注入当前依赖信息,命令为:

!grep -A 100 '^[dependencies]' Cargo.toml 2>/dev/null | head -30 || echo "No Cargo.toml found"

集成决策参考表

按需求给出常见选择:

  • 序列化:基于 derive,使用 serde、serde_json
  • 异步运行时:tokio 或 async-std,其中 tokio 最流行
  • HTTP 客户端:注重易用性,使用 reqwest
  • HTTP 服务端:现代方案,使用 axum、actix-web
  • 数据库:SQL 或 ORM,使用 sqlx、diesel
  • CLI 解析:基于 derive,使用 clap
  • 错误处理:区分应用与库,使用 anyhow、thiserror
  • 日志:门面模式,使用 tracing、log

添加依赖前的思考提示

  • 是否维护良好:近期提交、issue 响应是否活跃、破坏性变更频率
  • 范围:需要整个 crate 还是只需某个 feature,能否用 feature flag 减少体积
  • 集成方式:基于 trait 还是具体类型、同步还是异步、需要哪些约束

向上追溯与向下追溯

向上追溯到领域约束(Layer 3),例如选择 HTTP 框架时追问性能需求、查看 domain-web 的延迟与吞吐需求、考虑团队熟悉度。向下追溯到实现(Layer 1),例如集成外部 crate 时参考 m04-zero-cost 的 trait 约束与泛型、m06-error-handling 的错误类型兼容;FFI 集成时参考 unsafe-checker 的安全要求与 m12-lifecycle 的资源清理。

语言互操作

  • C/C++ → Rust:bindgen,自动生成绑定
  • Rust → C:cbindgen,导出 C 头文件
  • Python ↔ Rust:pyo3,Python 扩展
  • Node.js ↔ Rust:napi-rs,Node 插件
  • WebAssembly:wasm-bindgen,浏览器/WASI

Cargo Features

  • [features]:可选功能
  • default = [...]:默认特性
  • feature = "serde":条件依赖
  • [workspace]:多 crate 项目

错误码参考

  • E0433:找不到 crate,修复方式是加入 Cargo.toml
  • E0603:私有项,检查 crate 文档
  • Feature not enabled:可选特性未启用,在 features 中启用
  • 版本冲突:依赖不兼容,使用 cargo update 或固定版本
  • 重复类型:不同 crate 版本导致,在工作区中统一

crate 选型标准

  • 维护:近期提交为好,多年不活跃为警告
  • 社区:issue/PR 活跃为好,无响应为警告
  • 文档:有示例与 API 文档为好,文档稀少为警告
  • 稳定性:遵循语义化版本为好,频繁破坏性变更为警告
  • 依赖:少而知名为好,大量且冷门为警告

反模式

  • extern crate:已过时(2018+),直接使用即可
  • #[macro_use]:全局污染,改用显式导入
  • 通配符依赖 *:不可预测,改用具体版本
  • 依赖过多:供应链风险,评估必要性
  • 全部 vendor:维护负担,信任 crates.io

相关技能

  • 错误类型设计:m06-error-handling
  • trait 集成:m04-zero-cost
  • FFI 安全:unsafe-checker
  • 资源管理:m12-lifecycle

使用方式

当遇到 crate 集成或生态选型问题时调用该技能,它会注入当前依赖信息,并依据上述决策表、选型标准与错误码参考给出方向。

适用场景

需要为 Rust 项目选择 crate、配置 Cargo features 或 workspace、进行语言互操作、排查依赖相关编译错误时。

限制

资料未提供该技能的具体安装方式、运行环境要求、收费信息或效果数据,暂未提供。