tokio-rs/toasty

GitHub: tokio-rs/toasty

Toasty 是一个 Rust 异步 ORM,用于简化多数据库的数据操作和管理,提升开发效率。

Stars: 2452 | Forks: 96

Toasty

Rust 中舒适易用的 ORM

使用指南API 文档Crates.ioDiscord

[![Crates.io](https://img.shields.io/crates/v/toasty.svg)][crates-url] [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)][mit-url] [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/46b30047a4181131.svg)][actions-url] [![Discord chat](https://img.shields.io/discord/500028886025895936.svg?logo=discord&style=flat-square)][discord-url]
Toasty 支持 SQL 数据库(SQLite、PostgreSQL、MySQL)和 DynamoDB。它不隐藏数据库能力,而是根据目标数据库暴露其特性。 ## 使用 Toasty 你将使用带 `#[derive(toasty::Model)]` 派生宏注解的 Rust 结构体来定义数据模型。这是一个 [hello-toasty](examples/hello-toasty/src/main.rs) 示例。 ``` #[derive(Debug, toasty::Model)] struct User { #[key] #[auto] id: u64, name: String, #[unique] email: String, #[has_many] todos: toasty::HasMany, } #[derive(Debug, toasty::Model)] struct Todo { #[key] #[auto] id: u64, #[index] user_id: u64, #[belongs_to(key = user_id, references = id)] user: toasty::BelongsTo, title: String, } ``` 然后,你可以轻松地操作数据模型: ``` // Create a new user and give them some todos. let user = toasty::create!(User { name: "John Doe", email: "john@example.com", todos: [ { title: "Make pizza" }, { title: "Finish Toasty" }, { title: "Sleep" }, ], }).exec(&mut db).await?; // Load the user from the database let user = User::get_by_id(&mut db, &user.id).await?; // Load and iterate the user's todos let todos = user.todos().exec(&mut db).await?; for todo in &todos { println!("{:#?}", todo); } ``` ## SQL 与 NoSQL Toasty 同时支持 SQL 和 NoSQL 数据库。当前的驱动程序包括 SQLite、PostgreSQL、MySQL 和 DynamoDB。然而,它并不旨在抽象数据库。相反,Toasty 顺应目标数据库的能力,旨在帮助用户避免对特定数据库发出低效的查询。 当同时针对 SQL 和 NoSQL 数据库时,Toasty 会为基于索引的访问模式生成查询方法(例如,仅提供 `get_by_id`)。当针对 SQL 数据库时,Toasty 可能允许任意附加查询约束。当针对 NoSQL 数据库时,Toasty 只允许特定目标数据库能够执行的约束。例如,使用 DynamoDB 时,查询方法可能基于表的主键生成,并且可以对排序键设置附加约束。 ## 应用数据模型与数据库模式 Toasty 将应用数据模型与数据库的模式解耦。默认情况下,Toasty 应用程序的模式将与数据库模式 1:1 映射。但是,可以指定附加注解来自定义应用数据模型映射到数据库模式的方式。 ## 路线图 开发优先级基于反馈和贡献。如果你遇到缺失的功能或粗糙的边缘情况,请提交 issue 或 pull request。 计划中的工作位于 [`docs/dev/roadmap.md`](docs/dev/roadmap.md)。 ## 许可证 本项目采用 [MIT 许可证]。 ### 贡献 除非你明确声明,否则任何由你有意提交以纳入 Toasty 的贡献,均应依据 MIT 许可证授权,且没有任何附加条款或条件。
标签:async/await, AWS服务, CRUD操作, derive宏, DynamoDB, NoSQL数据库, PostgreSQL, Rust异步运行时, Rust语言, SQLite, SQL数据库, Tokio, 关系型数据库, 关系映射, 可视化界面, 宏编程, 对象关系映射, 开源库, 异步ORM, 异步编程, 搜索引擎爬虫, 数据库, 数据库抽象, 数据库访问, 数据模型, 易用ORM, 测试用例, 轻量级ORM, 通知系统, 非关系型数据库