// build-pass // // Tests that overflows do not occur in certain situations // related to generic diesel code use mini_diesel::*; pub trait HandleDelete {} pub fn handle_delete() where R: HasTable, R::Table: HandleDelete + 'static, { } impl HandleDelete for T where T: Table + HasTable + 'static, K: 'static, &'static K: Identifiable
, T::PrimaryKey: EqAll<<&'static K as Identifiable>::Id>, T::Query: FilterDsl<::Id>>::Output>, Filter::Id>>::Output>: IntoUpdateTarget
, { } mod mini_diesel { pub trait HasTable { type Table: Table; } pub trait Identifiable: HasTable { type Id; } pub trait EqAll { type Output; } pub trait IntoUpdateTarget: HasTable { type WhereClause; } pub trait Query { type SqlType; } pub trait AsQuery { type Query: Query; } impl AsQuery for T { type Query = Self; } pub trait FilterDsl { type Output; } impl FilterDsl for T where T: Table, T::Query: FilterDsl, { type Output = Filter; } pub trait QuerySource { type FromClause; } pub trait Table: QuerySource + AsQuery + Sized { type PrimaryKey; } pub type Filter = >::Output; } fn main() {}