File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,14 @@ Constants used in the type system are represented as [`ty::Const`].
44The variants of their [ ` ty::ConstKind ` ] mostly mirror the variants of [ ` ty::TyKind ` ]
55with the two * additional* variants being ` ConstKind::Value ` and ` ConstKind::Unevaluated ` .
66
7+ ## ` WithOptConstParam ` and dealing with the query system
8+
9+ To typecheck constants used in the type system, we have to know their expected type.
10+ For const arguments in type dependent paths, e.g. ` x.foo::<{ 3 + 4 }>() ` , we don't know
11+ the expected type for ` { 3 + 4 } ` until we are typechecking the containing function.
12+
13+ As we may however have to evaluate that constant during this typecheck, we would get a cycle error.
14+ For more details, you can look at [ this document] ( https://hackmd.io/@rust-const-generics/Bk5GHW-Iq ) .
715
816## Unevaluated constants
917
You can’t perform that action at this time.
0 commit comments