pub fn structurally_relate_consts<I, R>(
    relation: &mut R,
    a: <I as Interner>::Const,
    b: <I as Interner>::Const,
) -> Result<<I as Interner>::Const, TypeError<I>>
where I: Interner, R: TypeRelation<I>,
Expand description

Relates a and b structurally, calling the relation for all nested values. Any semantic equality, e.g. of unevaluated consts, and inference variables have to be handled by the caller.

FIXME: This is not totally structual, which probably should be fixed. See the HACKs below.