File tree Expand file tree Collapse file tree 1 file changed +2
-2
lines changed
compiler/rustc_infer/src/infer Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change 55//! Freshening is used primarily to get a good type for inserting into a cache. The result
66//! summarizes what the type inferencer knows "so far". The primary place it is used right now is
77//! in the trait matching algorithm, which needs to be able to cache whether an `impl` self type
8- //! matches some other type X -- *without* affecting `X`. That means if that if the type `X` is in
8+ //! matches some other type X -- *without* affecting `X`. That means that if the type `X` is in
99//! fact an unbound type variable, we want the match to be regarded as ambiguous, because depending
1010//! on what type that type variable is ultimately assigned, the match may or may not succeed.
1111//!
2121//! Because of the manipulation required to handle closures, doing arbitrary operations on
2222//! freshened types is not recommended. However, in addition to doing equality/hash
2323//! comparisons (for caching), it is possible to do a `ty::_match` operation between
24- //! 2 freshened types - this works even with the closure encoding.
24+ //! two freshened types - this works even with the closure encoding.
2525//!
2626//! __An important detail concerning regions.__ The freshener also replaces *all* free regions with
2727//! 'erased. The reason behind this is that, in general, we do not take region relationships into
You can’t perform that action at this time.
0 commit comments