rs-zero 0.1.1

Rust-first microservice framework inspired by go-zero engineering practices
Documentation
# rs-zero

rs-zero 是一个 Rust-first 微服务框架,借鉴 go-zero 的工程默认值,同时使用 Rust 生态中稳定的运行时、Web、RPC、观测和代码生成能力。它不是 go-zero 的逐行移植,也不承诺生成 Go 代码的字节级兼容。

适合使用 rs-zero 的场景:

- 想用 Rust 快速搭建 REST 或 RPC 服务。
- 需要统一响应、错误、配置、tracing、优雅停机、超时、限流和熔断等默认能力。
- 希望用 go-zero 风格 `.api` 或 SQL schema 生成 Rust-first skeleton。
- 希望按模块接入 discovery、observability、database、cache 和生产 adapter。

不适合的场景:

- 需要完整替代 `goctl` 的所有语言生成器。
- 需要默认测试连接真实数据库、Redis、etcd、Kubernetes 或 OTLP collector。
- 需要完整 protobuf 编译链或完整 MySQL 语法解析器。

## 能力速览

| 能力 | crate / 文档 | 说明 |
| --- | --- | --- |
| REST runtime | `rs-zero` feature `rest` / [REST 手册]docs/manual/rest.md | 基于 `axum``tower``tower-http`,提供统一响应、错误和默认中间件边界。 |
| RPC helper | `rs-zero` feature `rpc` / [RPC 手册]docs/manual/rpc.md | 基于 `tonic`,提供 client endpoint、request-id interceptor 和 health server helper。 |
| API DSL/codegen | `rzcli api``rs-zero-cli`)/ [API 教程]docs/tutorials/api-codegen.md | 解析 go-zero 风格 `.api`,导出 OpenAPI,并生成 Rust REST skeleton。 |
| Model/cache | `rzcli model``rs-zero-cli`)/ [Model 教程]docs/tutorials/model-cache.md | 从 MySQL/goctl 或显式 PostgreSQL SQL schema 生成 entity、repository trait、SQLx skeleton 和 cache key helper;可显式选择 MySQL/PostgreSQL backend。 |
| Discovery | `rs-zero` feature `discovery` / [Discovery 手册]docs/manual/discovery.md | static、memory、DNS adapter,以及 etcd/Kubernetes adapter feature 边界。 |
| Observability | `rs-zero` feature `observability` / [Observability 手册]docs/manual/observability.md | Prometheus 文本指标、REST metrics middleware、OpenTelemetry/OTLP 配置入口。 |
| DB/cache adapters | `rs-zero` features `db-*``cache-redis` / [生产 adapter]docs/manual/production-adapters.md | SQLx SQLite helper、MySQL/PostgreSQL feature helper、cache trait、in-memory backend、Redis facade。 |
| CLI | `rzcli``rs-zero-cli` crate)/ [CLI 手册]docs/manual/cli.md | REST scaffold、API validate/format/openapi/gen、model gen、rpc gen、goctl compatibility matrix。 |
| goctl compatibility | [兼容矩阵]docs/goctl-compatibility.md | 记录 API/model/RPC 的已支持、部分支持、未支持和有意差异。 |

## 快速开始

前置条件:安装 Rust stable toolchain。

```bash
cargo metadata --format-version 1 --no-deps
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
```

运行 REST 示例:

```bash
cargo run -p rest-hello
curl http://127.0.0.1:8080/ready
```

运行 RPC health 示例:

```bash
cargo run -p rpc-hello
```

使用 CLI 生成项目骨架:

```bash
cargo run -p rs-zero-cli -- new-rest hello-service --dir target/generated
cargo run -p rs-zero-cli -- api validate -f examples/api-hello/hello.api
cargo run -p rs-zero-cli -- api openapi -f examples/api-hello/hello.api -o target/openapi.json
cargo run -p rs-zero-cli -- model gen -s examples/model-cache/schema.sql -d target/generated --with-sqlx --with-redis-cache
# MySQL backend:
cargo run -p rs-zero-cli -- model gen -s examples/model-cache/schema.sql -d target/generated --with-sqlx --sqlx-backend mysql
# PostgreSQL schema:
cargo run -p rs-zero-cli -- model gen -s tests/fixtures/postgres/model/user.sql -d target/generated --dialect postgres --with-sqlx
cargo run -p rs-zero-cli -- rpc gen -p examples/rpc-hello/proto/hello.proto -d target/generated
```

安装 CLI 后可直接使用 `rzcli`:

```bash
cargo install rs-zero-cli --locked
# 本仓库开发时可使用本地路径安装:
cargo install --path crates/rs-zero-cli --locked
rzcli -v
rzcli --help
rzcli model gen -s examples/model-cache/schema.sql -d target/generated --with-sqlx
```

生成项目默认只依赖 `rs-zero` 运行时 crate,例如:

```toml
rs-zero = { version = "0.1", features = ["rest"] }
```

完整上手步骤见 [快速开始](docs/getting-started.md)。

## 文档导航

- 新手入口:[文档总览]docs/README.md / [快速开始]docs/getting-started.md
- 教程:[REST 服务]docs/tutorials/rest-service.md / [API codegen]docs/tutorials/api-codegen.md / [RPC 服务]docs/tutorials/rpc-service.md / [Model/cache]docs/tutorials/model-cache.md
- 用户手册:[CLI]docs/manual/cli.md / [REST]docs/manual/rest.md / [RPC]docs/manual/rpc.md / [API DSL]docs/manual/api-dsl.md / [Model/cache]docs/manual/model-cache.md
- 生产能力:[Discovery]docs/manual/discovery.md / [Observability]docs/manual/observability.md / [Production adapters]docs/manual/production-adapters.md / [生产检查清单]docs/production-checklist.md
- 开发建议:[最佳实践]docs/best-practices.md / [排障手册]docs/troubleshooting.md
- 兼容与路线图:[go-zero 映射]docs/go-zero-mapping.md / [goctl 兼容矩阵]docs/goctl-compatibility.md / [MVP roadmap]docs/mvp-roadmap.md

## 工作区结构

- `src/``rs-zero` 运行时模块,包括 `core``rest``rpc``resil``db``cache``discovery``observability`- `crates/rs-zero-cli/``rzcli` 工具链 crate,内聚 API/model/RPC parser 和 codegen。
- `examples/`:可运行示例和 adapter 示例。
- `tests/`:workspace 级集成测试和兼容测试。
- `docs/`:教程、手册、最佳实践、排障和兼容文档。
- `.helloagents/plans/`:项目方案包和交付记录。

## 验证命令

提交前至少运行:

```bash
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
```

文档链接和敏感信息检查由 `tests/docs_links.rs` 覆盖,会随 `cargo test --workspace` 一起运行。