当前位置: 首页 > article >正文

Rust 异步 ORM 新选择:Toasty 初探

Rust 异步 ORM 新选择Toasty 初探2026年4月Rust 生态迎来了一款新异步 ORM 框架 Toasty。为什么它如此收到 Rust 开发者的广泛关注呢因为它是来自于鼎鼎大名的 Tokio 团队该团队研发的 tokio异步运行时、tracing日志库、prost(pb 库)、axum(Web 框架)、loom(并发测试库) 等等在 Rust 开发中都是必备的库之一。本文将从初探的角度带着大家快速认识这款新框架。Toasty 介绍Toasty 是一个面向 Rust 编程语言的 ORM它以易用性为首要目标。目前它支持 SQL 数据库SQLite、PostgreSQL、MySQL和 NoSQL 数据库DynamoDB。Toasty 不会消除数据库的特性而是可以通过 feature 引入相应数据库的特性。与其他 ORM 不同Toasty 并非单纯的“SQL 生成工具”而是定位为“应用级查询引擎”核心设计理念是让应用层 schema 与数据库 schema 完全解耦将高层查询转换为不同数据库查询的最佳实践同时简化 API 设计减少 Rust 特性如 trait、生命周期的复杂使用降低上手门槛。需要注意的是当前 Toasty 是处于预览版状态大部分主要功能已经实现功能足够完整可以用于构建应用程序但是 API 尚未稳定未来仍可能存在破坏性变更不推荐用于严谨的项目。快速入门这个示例将带你创建项目、定义模型以及运行第一个查询。创建一个新项目cargonew toasty-democdtoasty-demo在Cargo.toml文件中添加以下依赖项[dependencies] toasty { version 0.3, features [sqlite] } tokio { version 1, features [full] }sqlitefeature 会启用 SQLite 驱动器。Toasty 还支持postgresql、mysql和dynamodb在 features 中添加以使用不同的数据库。定义模型编辑src/main.rs并添加以下内容// 模型#[derive(Debug, toasty::Model)]structUser{#[key]#[auto]id:u64,name:String,#[unique]email:String,}#[tokio::main]asyncfnmain()-toasty::Result(){// 构建 DB 处理器并注册当前 crate 下的所有模型letmutdbtoasty::Db::builder().models(toasty::models!(crate::*)).connect(sqlite::memory:).await?;// 基于模型创建数据表db.push_schema().await?;// 插入用户数据letusertoasty::create!(User{name:Alice,email:aliceexample.com,}).exec(mutdb).await?;println!(Created: {:?},user.name);// 通过主键 ID 查询用户数据letfoundUser::get_by_id(mutdb,user.id).await?;println!(Found: {:?},found.email);Ok(())}运行它cargorun你就能看到Created: Alice Found: aliceexample.comCURD 操作创建记录// 使用宏letusertoasty::create!(User{name:Alice,email:aliceexample.com,}).exec(mutdb).await?;// 链式操作letuserUser::create().name(Alice).email(aliceexample.com).exec(mutdb).await?;// 批量插入letuserstoasty::create!(User::[{name:Alice,email:aliceexample.com},{name:Bob,email:bobexample.com},{name:Carol,email:carolexample.com},]).exec(mutdb).await?;查询记录// 通过主键获取单条记录letuserUser::get_by_id(mutdb,1).await?;println!(Found: {},user.name);// 获取所有记录letusersUser::all().exec(mutdb).await?;println!(Found: {:?},users);// 使用表达式进行条件查询letusersUser::filter(User::fields().name().eq(Alice)).exec(mutdb).await?;// 使用链式表达式进行条件查询letusersUser::filter_by_name(Alice).filter(User::fields().age().gt(25)).exec(mutdb).await?;这里 Toasty 构建一套fields()、gt()等 API 的查询语法其实是为了抹平 SQL 与 NoSQL 的语法差异确保能正确转换到对应的数据库查询。更新记录user.update().name(Alice Smith).email(alice.smithexample.com).exec(mutdb).await?;// 通过查询更新User::filter_by_id(user_id).update().name(Bob).exec(mutdb).await?;删除记录user.delete().exec(mutdb).await?;// 基于主键删除记录User::delete_by_id(mutdb,user.id).await?;// 通过查询删除记录User::filter_by_email(aliceexample.com).delete().exec(mutdb).await?;事务操作letmuttxdb.transaction().await?;toasty::create!(User{name:Alice}).exec(muttx).await?;toasty::create!(User{name:Bob}).exec(muttx).await?;tx.commit().await?;总结总得来说Toasty 还是蛮有野心的与其他的 ORM 框架不同只关注于关系型数据库Toasty 想要的是整合关系型数据库与非关系型数据库提供一致性的访问 API。不过毕竟 Toasty 才刚起步生态还处于建设当中可以先持续关注着未来可期。

相关文章:

Rust 异步 ORM 新选择:Toasty 初探

Rust 异步 ORM 新选择:Toasty 初探 2026年4月,Rust 生态迎来了一款新异步 ORM 框架 Toasty。为什么它如此收到 Rust 开发者的广泛关注呢?因为它是来自于鼎鼎大名的 Tokio 团队,该团队研发的 tokio(异步运行时&#xf…...

Ollama一键部署【书生·浦语】internlm2-chat-1.8b:镜像免配置实操手册

Ollama一键部署【书生浦语】internlm2-chat-1.8b:镜像免配置实操手册 想体验一个轻量又好用的中文对话模型吗?今天给大家介绍一个超级简单的部署方法,让你在几分钟内就能用上【书生浦语】的 internlm2-chat-1.8b 模型。这个模型只有18亿参数…...

Adafruit MPR121电容触摸库深度解析与嵌入式集成指南

1. 项目概述Adafruit MPR121 是一款专为 Adafruit 官方 MPR121 电容式触摸传感器模块设计的 Arduino 兼容库,面向嵌入式硬件工程师与固件开发者提供稳定、可复用的底层驱动能力。该库并非通用型 MPR121 封装,而是深度适配 Adafruit 自研硬件(…...

Windows下OpenClaw避坑指南:Qwen3.5-9B镜像对接全记录

Windows下OpenClaw避坑指南:Qwen3.5-9B镜像对接全记录 1. 为什么选择WindowsOpenClaw组合 作为一个长期在Windows环境下工作的开发者,我一直在寻找能够提升本地自动化效率的工具。OpenClaw的出现让我眼前一亮——它不像那些需要复杂配置的企业级系统&a…...

Chord视频理解工具开源可部署:支持国产昇腾/寒武纪平台适配路线

Chord视频理解工具开源可部署:支持国产昇腾/寒武纪平台适配路线 1. 引言:让AI看懂视频,本地部署更安心 你有没有遇到过这样的场景?手头有一段视频,想快速知道里面发生了什么,或者想精准找出某个特定的人或…...

XUnity.AutoTranslator:Unity游戏翻译终极指南,5分钟实现游戏汉化

XUnity.AutoTranslator:Unity游戏翻译终极指南,5分钟实现游戏汉化 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator 是一款专为Unity游戏设计的实时翻译插件&…...

通义千问3-4B模型语义搜索优化:ES插件集成部署实战

通义千问3-4B模型语义搜索优化:ES插件集成部署实战 1. 引言:为什么需要语义搜索优化 传统的搜索引擎主要依赖关键词匹配,当你搜索"苹果"时,它可能返回水果苹果、苹果公司、甚至人名苹果的各种结果。而语义搜索能理解你…...

从Java转行大模型应用,Python + LangChain + 大模型 + Streamlit 生成简历与智能分析实战

这是一个开箱即用、完整可运行的实战项目,实现两大核心功能: AI 智能生成简历(基于个人信息自动生成专业简历)简历智能分析 可视化(评分、关键词匹配、优势 / 短板分析、图表展示) 技术栈: …...

别让AI代码,变成明天的技术债赋

如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

低空经济新蓝海:海事监测无人机技术全解析与应用展望

低空经济新蓝海:海事监测无人机技术全解析与应用展望 引言 大家好!随着“低空经济”被正式列为国家战略性新兴产业,无人机技术的应用版图正以前所未有的速度从我们熟悉的陆地,向更为广阔的海洋延伸。在这片“新蓝海”中&#xff0…...

网盘直链下载助手:八大主流网盘真实下载地址获取终极指南

网盘直链下载助手:八大主流网盘真实下载地址获取终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

剪映专业版教程:制作圆形滚入分屏开场效果

前言 今天教大家一个非常有创意的开场效果:圆形滚入分屏开场。这种效果模拟四个圆形画面依次从屏幕外滚入,分别占据屏幕的四块区域,最后汇聚成一幅完整画面,非常适合四季主题、年度回顾、品牌展示等场景。 效果预览:…...

MATLAB高阶累积量函数实战:从理论到ARMA信号分析

1. 高阶累积量函数在信号处理中的核心价值 信号处理领域有个常被忽视但极其重要的概念——高阶累积量。传统频谱分析只能捕捉信号的二阶统计特性,就像用黑白照片记录世界。而高阶累积量相当于给信号分析装上了"彩色滤镜",能揭示非高斯信号中隐…...

安全设备-NIDS入侵检测系统

免责声明: 本文内容仅用于安全研究与学习,请在合法授权的环境中使用,严禁用于任何非法用途。因使用不当造成的后果由使用者自行承担,并应遵守相关法律法规。 IDS-入侵检测系统 基于主机的入侵检测系统(HIDS)基于网络的…...

4款产品小心侵权!美国外观专利维权频发,亚马逊卖家侵权预警!

近期,赛贝了解到亚马逊平台上鞋跟保护套、防滑冰爪、广告展示牌、汽车排气变径组件等四类产品的美国外观专利维权行动频繁,已有不少卖家因被控侵权导致热销链接下架,损失惨重。赛贝整理相关专利信息,帮助亚马逊卖家更好地预防侵权…...

OBS-VirtualCam终极指南:3大核心功能实现专业虚拟摄像头方案

OBS-VirtualCam终极指南:3大核心功能实现专业虚拟摄像头方案 【免费下载链接】obs-virtual-cam 项目地址: https://gitcode.com/gh_mirrors/obs/obs-virtual-cam OBS-VirtualCam是一款专为OBS Studio设计的开源插件扩展,提供虚拟摄像头和视频输出…...

最短路径算法:如何使用数据导航和优化

原文:towardsdatascience.com/shortest-path-algorithms-how-to-use-data-to-navigate-and-optimize-746809d51e8f https://unsplash.com/ 在 Unsplash 上提供](…/Images/6f861b51b31c488d694759f308a2da6e.png) 图片由 [Unsplash](https://unsplash.com/photos/t…...

AI全身全息感知快速体验:5步完成从部署到生成你的第一张骨骼图

AI全身全息感知快速体验:5步完成从部署到生成你的第一张骨骼图 1. 引言:开启你的全息感知之旅 想象一下,你有一张照片,里面的人正在跳舞、打拳,或者只是摆了一个有趣的姿势。现在,你只需要点几下鼠标&…...

Spyglass CDC实战:从约束到验证的完整流程解析

1. Spyglass CDC验证入门:为什么需要它? 第一次接触多时钟域设计时,我完全低估了CDC问题的复杂性。直到仿真阶段出现数据丢失,才意识到异步时钟域交互就像两个语言不通的人交流——如果没有合适的翻译机制(同步器&…...

造相Z-Image模型v2提示词工程进阶:结构化Prompt构建方法

造相Z-Image模型v2提示词工程进阶:结构化Prompt构建方法 用对方法,让AI真正听懂你的创意 不知道你有没有这样的经历:脑子里有个特别棒的画面,但用Z-Image生成出来的结果总是差那么点意思。要么细节不对,要么风格跑偏&a…...

深度解析N_m3u8DL-CLI-SimpleG:图形化M3U8下载工具技术指南

深度解析N_m3u8DL-CLI-SimpleG:图形化M3U8下载工具技术指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在流媒体视频处理领域,M3U8格式已成为主流的分…...

QKeyMapper:3分钟学会Windows按键自定义,从此告别繁琐操作

QKeyMapper:3分钟学会Windows按键自定义,从此告别繁琐操作 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到…...

如何高效使用网盘直链下载工具:告别限速的全能解决方案

如何高效使用网盘直链下载工具:告别限速的全能解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

终极免费文档下载工具:跨平台文档获取的完整解决方案

终极免费文档下载工具:跨平台文档获取的完整解决方案 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解…...

如何通过OBS Multi RTMP插件实现多平台同步直播

如何通过OBS Multi RTMP插件实现多平台同步直播 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否遇到过需要在多个直播平台同时开播,却不得不为每个平台单独配置推流参…...

《QGIS快速入门与应用基础》270:需求:制作含行政边界、道路、POI的乡镇地图

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

5分钟快速上手:XXMI启动器统一游戏模组管理平台完全指南

5分钟快速上手:XXMI启动器统一游戏模组管理平台完全指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 还在为多款二次元游戏的模组管理而烦恼吗?XXMI启…...

STM32裸机开发框架设计与优化实践

1. 项目概述:无OS的MCU开发框架设计理念在嵌入式开发领域,基于MCU(微控制器单元)的设备往往受限于资源约束,无法运行完整的操作系统。这时候,一个精心设计的裸机(bare-metal)软件框架…...

编写程序实现智能厨房刀具消毒,完成后自动提示,保障饮食安全。

📝 项目概述:Smart Knife Sterilizer Slogan: 代码守护舌尖安全,紫外精准消杀;让每一刀都切得安心,吃得放心。 一、 实际应用场景描述 (Context & Scenario) * 场景:现代家庭厨房。菜刀、水果刀在使用后…...

如何从 iCloud 还原照片?6 种方法成功解决

丢失珍贵的照片可能会令人心碎。幸好,有了 iCloud 这样的服务,恢复照片就变得相对简单了。iCloud 是 Apple 的云存储服务,它允许用户安全地备份照片和其他数据,确保珍贵的回忆永不丢失。在本文中,我们将指导您完成从 i…...