我正在将现有的 Python/SQLAlchemy 应用程序移植到 Rust。我对 Rust 完全陌生,看起来diesel 是 SQLAlchemy 的合理替代品(我还需要做 postgis,diesel 似乎是唯一有此功能的 Rust ORM)。
简单的代码演示位于 github diesel_uuid。根据帖子here和here,我有依赖项:
uuid = { version = "0.8.2", features = ["serde", "v4"] }
diesel = { version = "2.1.0", features = ["chrono", "postgres", "r2d2", "uuid"] }
它可以构建并运行,但我在 UUID 类型方面遇到问题。
在我的 src/bin/get_user.rs 代码中我有:
let real_uid = Uuid::parse_str( &id );
let results = uuid_users
.filter( user_uid.eq( real_uid ) )
.limit(5)
.select(models::UuidUser::as_select())
.load(connection)
.expect("Error loading users");
如果我尝试构建这个,我会得到:
error[E0277]: the trait bound Result<uuid::Uuid, uuid::Error>: diesel::Expression is not satisfied
--> src/bin/get_user.rs:19:20
|
19 | .filter( user_uid.eq( real_uid ) )
| ^^ the trait diesel::Expression is not implemented for Result<uuid::Uuid, uuid::Error>
|
然后还有更多错误。 如果我过滤字符串列(名称),它工作得很好,所以代码工作 - 只是不是 uuid 过滤器。
根据有关柴油和 uuid 的其他帖子,我想知道我是否做错了什么。柴油和 uuid 版本控制?或者也许有些 use 和 mod 行的使用顺序?