notation
authorRalf Jung <post@ralfj.de>
Thu, 19 Jul 2018 17:09:50 +0000 (19:09 +0200)
committerRalf Jung <post@ralfj.de>
Thu, 19 Jul 2018 17:09:50 +0000 (19:09 +0200)
ralf/_posts/2018-07-19-const.md

index d523935c8030bcb6ea4e55a1a6f6e795be0a76d2..d93a6cddaf021ce1fd7341c730ad98b7b6a215af 100644 (file)
@@ -13,7 +13,7 @@ Expect something like a structured brain dump, so there are some unanswered ques
 
 ## Some Background
 
-CTFE is the mechanism used by the compiler, primarily, to evaluate items like `const x : T = ...;`.
+CTFE is the mechanism used by the compiler, primarily, to evaluate items like `const x: T = ...;`.
 The `...` here is going to be Rust code that must be "run" at compile-time, because it can be used as a constant in the code -- for example, it can be used for array lengths.
 
 Notice that CTFE is *not* the same as constant propagation: Constant propagation is an optimization pass done by LLVM that will opportunistically change code like `3 + 4` into `7` to avoid run-time work.
@@ -23,8 +23,8 @@ You can statically see, just from the syntax of the code, whether CTFE applies t
 CTFE is only used in places like the value of a `const` or the length of an array.
 {% highlight rust %}
 fn demo() {
-  const X : u32 = 3 + 4; // CTFE
-  let x : u32 = 4 + 3; // no CTFE (but maybe constant propagation)
+  const X: u32 = 3 + 4; // CTFE
+  let x: u32 = 4 + 3; // no CTFE (but maybe constant propagation)
 }
 {% endhighlight %}
 We say that the `3 + 4` above is in *const context* and hence subject to CTFE, but the `4 + 3` is not.