On Saturday, 20 May 2017 at 03:50:31 UTC, rikki cattermole wrote:
On 20/05/2017 4:24 AM, 9il wrote:
snip
Looks like Rust macro system can do something similar.
Just to confirm, in Rust is it calling a function to assign the
value?
I mean that Rust has macro system. I do not know if it can be
used for indexing.
E.g.
```D
void opIndexAssign(T v, size_t j, size_t i);
```
Because if the compiler is seeing a function call, it probably
won't attempt this optimization, but if its seeing a direct to
memory write, that's a different story.
Also the compiler doesn't know if ``foo[i][j]`` is equal to
``foo[i, j]``. So your proposed solution isn't valid.
Proposed solution is similar to mixins. Compiler do not need to
know something. Compiler just need to replace `foo[i, j]` with
its body like it is a mixin. All loop optimiation would be done
by optimizer. See clang loop optimisation for more details.