Update ParamEnv docs

This commit is contained in:
Boxy 2024-04-01 17:29:34 +01:00
parent 8058136502
commit a91f6221b9

View File

@ -1034,9 +1034,11 @@ fn new(ui: UniverseIndex, var: BoundVar) -> Self {
} }
} }
/// When type checking, we use the `ParamEnv` to track /// When interacting with the type system we must provide information about the
/// details about the set of where-clauses that are in scope at this /// environment. `ParamEnv` is the type that represents this information. See the
/// particular point. /// [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)] #[derive(Copy, Clone, Hash, PartialEq, Eq)]
pub struct ParamEnv<'tcx> { pub struct ParamEnv<'tcx> {
/// This packs both caller bounds and the reveal enum into one pointer. /// This packs both caller bounds and the reveal enum into one pointer.
@ -1103,8 +1105,11 @@ fn visit_with<V: TypeVisitor<TyCtxt<'tcx>>>(&self, visitor: &mut V) -> V::Result
impl<'tcx> ParamEnv<'tcx> { impl<'tcx> ParamEnv<'tcx> {
/// Construct a trait environment suitable for contexts where /// Construct a trait environment suitable for contexts where
/// there are no where-clauses in scope. Hidden types (like `impl /// there are no where-clauses in scope. Hidden types (like `impl
/// Trait`) are left hidden, so this is suitable for ordinary /// Trait`) are left hidden. In majority of cases it is incorrect
/// type-checking. /// 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] #[inline]
pub fn empty() -> Self { pub fn empty() -> Self {
Self::new(List::empty(), Reveal::UserFacing) Self::new(List::empty(), Reveal::UserFacing)