From 9747caab48a7c671f29bc427faf1263bb189376e Mon Sep 17 00:00:00 2001 From: lcnr Date: Mon, 20 Sep 2021 19:10:40 +0200 Subject: [PATCH] const generics update --- src/SUMMARY.md | 1 + src/constants.md | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index c69ad73a5..5e59cf651 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -98,6 +98,7 @@ - [Generics and substitutions](./generics.md) - [`TypeFolder` and `TypeFoldable`](./ty-fold.md) - [Generic arguments](./generic_arguments.md) + - [Constants in the type system](./constants.md) - [Type inference](./type-inference.md) - [Trait solving](./traits/resolution.md) - [Early and Late Bound Parameters](./early-late-bound.md) diff --git a/src/constants.md b/src/constants.md index 9e63a58cd..137351c22 100644 --- a/src/constants.md +++ b/src/constants.md @@ -7,20 +7,20 @@ with the two *additional* variants being `ConstKind::Value` and `ConstKind::Unev ## Unevaluated constants -*This section talks about what's happening with `feature(const_generics)` enabled. +*This section talks about what's happening with `feature(generic_const_exprs)` enabled. On stable we do not yet supply any generic parameters to anonymous constants, avoiding most of the issues mentioned here.* Unless a constant is either a simple literal, e.g. `[u8; 3]` or `foo::<{ 'c' }>()`, or a generic parameter, e.g. `[u8; N]`, converting a constant to its [`ty::Const`] representation -returns an unevaluated constant. Even fully concrete constants which do not depend on a -generic parameter are not evaluated right away. +returns an unevaluated constant. Even fully concrete constants which do not depend on +generic parameters are not evaluated right away. We do not eagerly evaluate constant as they can be used in the `where`-clauses of their parent item, for example: ```rust -#[feature(const_generics, const_evaluatable_checked)] +#[feature(generic_const_exprs)] fn foo() where [u8; ::ASSOC + 1]: SomeOtherTrait,