diff options
| author | bors <bors@rust-lang.org> | 2024-04-01 23:02:17 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-04-01 23:02:17 +0000 |
| commit | dd5e502d4b095be205c07da1481846f0a07c43b4 (patch) | |
| tree | 57ab9ad798116a035c9eac596f5e24f53d973cb9 | |
| parent | 1684a753dbca5d23b2e03568e6fbbb48eb72d0e6 (diff) | |
| parent | 03dd3293550c68fcdd00b011fcaa4132084f8a03 (diff) | |
| download | rust-dd5e502d4b095be205c07da1481846f0a07c43b4.tar.gz rust-dd5e502d4b095be205c07da1481846f0a07c43b4.zip | |
Auto merge of #123327 - BoxyUwU:param_env_docs_rewrite, r=compiler-errors
Update `ParamEnv` docs There is now a wealth of information in the dev guide about `ParamEnv` so we should explicitly link to it from the doc comments. I also added a caution against using `ParamEnv` and removed the comment about it being "suitable for type checking" as you should practically never use `ParamEnv::empty` for type checking r? `@compiler-errors`
| -rw-r--r-- | compiler/rustc_middle/src/ty/mod.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index ef7626a054f..4e1baaec39e 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -1034,9 +1034,11 @@ impl PlaceholderLike for PlaceholderConst { } } -/// When type checking, we use the `ParamEnv` to track -/// details about the set of where-clauses that are in scope at this -/// particular point. +/// When interacting with the type system we must provide information about the +/// environment. `ParamEnv` is the type that represents this information. See the +/// [dev guide chapter][param_env_guide] for more information. +/// +/// [param_env_guide]: https://rustc-dev-guide.rust-lang.org/param_env/param_env_summary.html #[derive(Copy, Clone, Hash, PartialEq, Eq)] pub struct ParamEnv<'tcx> { /// This packs both caller bounds and the reveal enum into one pointer. @@ -1103,8 +1105,11 @@ impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ParamEnv<'tcx> { impl<'tcx> ParamEnv<'tcx> { /// Construct a trait environment suitable for contexts where /// there are no where-clauses in scope. Hidden types (like `impl - /// Trait`) are left hidden, so this is suitable for ordinary - /// type-checking. + /// Trait`) are left hidden. In majority of cases it is incorrect + /// to use an empty environment. See the [dev guide section][param_env_guide] + /// for information on what a `ParamEnv` is and how to acquire one. + /// + /// [param_env_guide]: https://rustc-dev-guide.rust-lang.org/param_env/param_env_summary.html #[inline] pub fn empty() -> Self { Self::new(List::empty(), Reveal::UserFacing) |
