fn implied_bounds_program_clauses<'a, I, Wc>(
    builder: &'a mut ClauseBuilder<'_, I>,
    ty: &Ty<I>,
    where_clauses: Wc,
)
where I: Interner, Wc: Iterator<Item = &'a QuantifiedWhereClause<I>>,
Expand description

Generates the “implied bounds” clauses for an applicative type with the name type_name. For example, if type_name represents a struct S that is declared like:

struct S<T> where T: Eq {  }

then we would generate the rule:

FromEnv(T: Eq) :- FromEnv(S<T>)

§Parameters

  • builder – the clause builder. We assume all the generic types from S are in scope.
  • type_name – in our example above, the name S
  • where_clauses – the list of where clauses declared on the type (T: Eq, in our example).