pub trait HasType: Debug {
// Required method
fn get_type_impl(&self, state: &TypeState) -> Option<TypeVarID>;
// Provided methods
fn get_type(&self, state: &TypeState) -> TypeVarID { ... }
fn try_get_type(&self, state: &TypeState) -> Option<TypeVarID> { ... }
fn unify_with(
&self,
rhs: &dyn HasType,
state: &TypeState,
) -> UnificationBuilder { ... }
}