diesel-rust (Postgres) uuid 失败,E0277diesel::表达式不满意

问题描述 投票:0回答:1

我正在将现有的 Python/SQLAlchemy 应用程序移植到 Rust。我对 Rust 完全陌生,看起来diesel 是 SQLAlchemy 的合理替代品(我还需要做 postgis,diesel 似乎是唯一有此功能的 Rust ORM)。

简单的代码演示位于 github diesel_uuid。根据帖子herehere,我有依赖项:

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 行的使用顺序?

rust uuid rust-diesel
1个回答
0
投票

啊啊啊……

Uuid::parse_str 返回结果。调用 .unwrap() 可以解决问题。

感谢 Ross Rogers 的修复。

© www.soinside.com 2019 - 2024. All rights reserved.