SeaORM 主要提供两种事务写法:
transaction(...):闭包事务,闭包返回Ok自动提交,返回Err自动回滚。begin():手动开启事务,再调用commit()或rollback()。
SeaORM 主要提供两种事务写法:
transaction(...):闭包事务,闭包返回 Ok 自动提交,返回 Err 自动回滚。begin():手动开启事务,再调用 commit() 或 rollback()。dotenvy 是 Rust 里用来读取 .env 文件的库。它会把 .env 文件里的配置项加载成环境变量,然后你就可以通过 std::env::var() 或 dotenvy::var() 读取。
你的报错核心原因是:VS Code 现在用的是 rustc main.rs 直接编译,而不是 cargo run。
日志里很明显:
rustc main.rs
直接用 rustc 编译时,如果没有指定 edition,会按旧的 Rust 2015 处理;而 async fn 需要 Rust 2018 或更高版本。Cargo 官方文档也说明,Cargo.toml 里的 edition 会决定包的 Rust Edition;如果没写 edition,则会为了兼容性默认按 2015 处理。(Rust 文档)
anyhow 主要用于 应用程序层面的错误处理,它提供了 anyhow::Error 和 anyhow::Result<T>,可以让你在业务代码、命令行工具、Web 后端、脚本型程序里更轻松地处理各种错误。官方文档说明,anyhow::Error 是一个基于 trait object 的错误类型,适合 Rust 应用程序中进行惯用的错误处理;anyhow::Result<T> 等价于 Result<T, anyhow::Error>。(文档.rs)
下面给你一份 SeaORM 入门到可落地使用教程,以 Rust + SeaORM + MySQL8.0 为主线。
先说版本选择:SeaORM 官方站当前默认展示 2.0.x 文档,但 docs.rs 上 sea_orm 的 latest 仍显示 1.1.20;同时 SeaORM 1.1.x 官方文档页提示该版本“不再积极维护”,建议看 2.0.x。为了你现在做 Rust Web 项目更稳,我下面用 SeaORM 1.1.x 稳定写法讲,后续升级 2.0 时再单独处理差异。(Docs.rs)
AI回复:我会从“移动语义 → Clone → Copy → derive 自动实现 → 实战取舍”这条线讲,重点放在你写业务代码时怎么判断一个类型该不该 Copy/Clone。
下面给你一套可落地的 RBAC 方案,技术栈按:Salvo 0.93.0 + Sqlx + MySQL 8.0 + Redis 6。 Salvo 当前 docs.rs 最新版本显示为 0.93.0,发布时间为 2026-05-01;Salvo 的 Handler 既可以作为最终接口处理器,也可以作为中间件,这很适合实现“登录认证中间件 + 权限校验中间件”。
for n in &vec 拿到的是 &T,不是 T。要不要写 *n,取决于你后面这个地方需要的是“引用”还是“值本身”。
& 的主要作用是“借用”,也就是拿到某个值的引用,但不取得它的所有权。
Result 与可恢复的错误
大部分错误并没有严重到需要程序完全停止执行。有时,一个函数会因为一个容易理解并做出反应的原因失败。例如,如果因为打开一个并不存在的文件而失败,此时我们可能想要创建这个文件,而不是终止进程。
回忆一下第 2 章 “使用 Result 类型来处理潜在的错误” 部分中的那个 Result 枚举,它定义有如下两个成员,Ok 和 Err:
enum Result<T, E> {
Ok(T),
Err(E),
}