Given generic arguments, could they be unified after
replacing parameters with inference variables or placeholders.
This behavior is toggled using the const generics.
Generic parameters are pretty much just bound variables, e.g.
the type of fn foo<'a, T>(x: &'a T) -> u32 { ... } can be thought of as
for<'a, T> fn(&'a T) -> u32.