Rust的数据库生态成熟,SQLx提供异步查询,Diesel提供类型安全ORM。 ## SQLx(异步) ```rust use sqlx::sqlite::SqlitePool; #[tokio::main] async fn main() -> Result<(), sqlx::Error> { let pool = SqlitePool::connect("sqlite:mydb.db").await?; sqlx::query!( "INSERT INTO users (name, email) VALUES (?, ?)", "Alice", "alice@example.com" ) .execute(&pool) .await?; let users = sqlx::query_as!( User, "SELECT id, name, email FROM users" ) .fetch_all(&pool) .await?; Ok(()) } ``` ## Diesel(ORM) ```rust use diesel::prelude::*; #[derive(Queryable, Selectable)] #[diesel(table_name = crate::schema::users)] struct User { id: i32, name: String, email: String, } #[derive(Insertable)] #[diesel(table_name = crate::schema::users)] struct NewUser { name: String, email: String, } fn create_user(conn: &mut PgConnection, name: &str, email: &str) -> User { let new_user = NewUser { name: name.to_string(), email: email.to_string(), }; diesel::insert_into(users::table) .values(&new_user) .returning(User::as_returning()) .get_result(conn) .expect("Error saving user") } ``` 选择建议:需要编译期SQL验证用SQLx,偏好ORM风格用Diesel。