• “Query type ops” are type ops that are implemented using a canonical query. The Self type here contains the kernel of information needed to do the operation – TypeOp is actually implemented for ParamEnvAnd<Self>, since we always need to bring along a parameter environment as well. For query type-ops, we will first canonicalize the key and then invoke the query on the tcx, which produces the resulting query region constraints.
  • “Type ops” are used in NLL to perform some particular action and extract out the resulting region constraints (or an error if it cannot be completed).