小编Fra*_*ing的帖子

Diesel 的查找或过滤器执行删除操作的一般用法

我正在尝试使用通用 Diesel 函数来缩小重复性任务,例如根据主键删除一行。

我得到了相对较快的行的通用插入,但删除查询似乎非常困难。我尝试通过使用find()和 来解决它filter()。我也咨询过类似的话题12,但没有成功。

使用 find

use diesel::prelude::*;
use diesel::query_dsl::methods::FindDsl;
use std::error::Error;

pub struct DB {
    conn: SqliteConnection,
}

impl DB {
    pub fn remove_row<'a, T>(&self, table: T, pk: &'a str) -> Result<(), Box<Error>>
    where
        T: FindDsl<&'a str>,
        <T as FindDsl<&'a str>>::Output: diesel::Identifiable,
        <T as FindDsl<&'a str>>::Output: diesel::associations::HasTable,
    {
        diesel::delete(table.find(pk)).execute(&self.conn)?;
        Ok(())
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致以下错误,我根本无法解释:

error[E0275]: overflow evaluating the requirement `_: std::marker::Sized`
   --> src/db/mod.rs:103:3
    |
103 |         diesel::delete (table.find (pk)) .execute (&self.conn) …
Run Code Online (Sandbox Code Playgroud)

generics generic-programming rust rust-diesel

4
推荐指数
1
解决办法
2173
查看次数

标签 统计

generic-programming ×1

generics ×1

rust ×1

rust-diesel ×1