【发布时间】:2019-03-27 06:07:03
【问题描述】:
我有这个结构:
#[table_name = "clients"]
#[derive(Serialize, Deserialize, Queryable, Insertable, Identifiable, Associations)]
pub struct Client {
pub id: Option<i64>,
pub name: String,
pub rank: Option<i64>,
}
以及以下实现:
impl Client {
pub fn get(name: String, connection: &PgConnection) -> Option<Self> {
match clients::table
.filter(clients::name.eq(&name))
.limit(1)
.load::<Client>(connection)
{
Ok(clients) => Some(clients[0]),
Err(_) => None,
}
}
}
这给了我以下错误:
.load::<Client>(connection) {
^^^^ the trait `diesel::Queryable<diesel::sql_types::BigInt, _>` is not implemented for `std::option::Option<i64>`
【问题讨论】:
-
请注意,如果你想返回一个拥有的客户而不是一个参考,而不是你的匹配,你可以写
.ok().and_then(|clients| clients.into_iter().next())。 -
您在
table宏中添加了什么?我想问题就在那里。 -
请查看如何创建minimal reproducible example,然后查看edit 您的问题以包含它。例如,我们无法分辨模式是什么。尝试在一个全新的 Cargo 项目中重现您的错误。还有Rust-specific MCVE tips 和Diesel-specific tips。
标签: rust rust-diesel