用 sqlx::postgres 和 i64 生锈
Rust with sqlx::postgres and i64
我是 Rust 新手,正在尝试使用 sqlx 和 PostgresQL 实现 API。
在阅读 PostgresQL 时,它似乎不支持 u64
,而 MySQL 支持。所以我将我的代码更改为 i64
,如 documented here.
但是我的一些代码似乎仍然需要一个 u64
值:
代码示例:
pub async fn drop_table(&self) -> Result<i64, sqlx::Error> {
sqlx::query("DROP TABLE IF EXISTS users;")
.execute(&*self.pool)
.await
}
及其产生的错误:
error[E0308]: mismatched types
--> src\dao\user_dao.rs:7:9
|
7 | / sqlx::query("DROP TABLE IF EXISTS users;")
8 | | .execute(&*self.pool)
9 | | .await
| |__________________^ expected `i64`, found `u64`
|
= note: expected enum `std::result::Result<i64, _>`
found enum `std::result::Result<u64, _>`
我可能可以强制转换变量,但这可能会在运行时导致恐慌,那么处理它的正确方法是什么?
我已经使用 this 作为参考应用程序。
无论您是在 PostgresQL 连接还是 MySQL 连接上执行查询,reference application is using sqlx v0.3.5 and in that version of sqlx
the execute
方法总是 returns 一个 Result<u64, sqlx::Error>
。 u64
表示受执行查询影响的行数,并且始终是无符号的。您应该更新 drop_table
的签名以反映:
pub async fn drop_table(&self) -> Result<u64, sqlx::Error> {
sqlx::query("DROP TABLE IF EXISTS users;")
.execute(&*self.pool)
.await
}
我是 Rust 新手,正在尝试使用 sqlx 和 PostgresQL 实现 API。
在阅读 PostgresQL 时,它似乎不支持 u64
,而 MySQL 支持。所以我将我的代码更改为 i64
,如 documented here.
但是我的一些代码似乎仍然需要一个 u64
值:
代码示例:
pub async fn drop_table(&self) -> Result<i64, sqlx::Error> {
sqlx::query("DROP TABLE IF EXISTS users;")
.execute(&*self.pool)
.await
}
及其产生的错误:
error[E0308]: mismatched types
--> src\dao\user_dao.rs:7:9
|
7 | / sqlx::query("DROP TABLE IF EXISTS users;")
8 | | .execute(&*self.pool)
9 | | .await
| |__________________^ expected `i64`, found `u64`
|
= note: expected enum `std::result::Result<i64, _>`
found enum `std::result::Result<u64, _>`
我可能可以强制转换变量,但这可能会在运行时导致恐慌,那么处理它的正确方法是什么?
我已经使用 this 作为参考应用程序。
无论您是在 PostgresQL 连接还是 MySQL 连接上执行查询,reference application is using sqlx v0.3.5 and in that version of sqlx
the execute
方法总是 returns 一个 Result<u64, sqlx::Error>
。 u64
表示受执行查询影响的行数,并且始终是无符号的。您应该更新 drop_table
的签名以反映:
pub async fn drop_table(&self) -> Result<u64, sqlx::Error> {
sqlx::query("DROP TABLE IF EXISTS users;")
.execute(&*self.pool)
.await
}