我正在尝试使用通用 Diesel 函数来缩小重复性任务,例如根据主键删除一行。
我得到了相对较快的行的通用插入,但删除查询似乎非常困难。我尝试通过使用find()和 来解决它filter()。我也咨询过类似的话题1和2,但没有成功。
finduse 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)