Hello, Why is copy ctor in this example not called? ```d import std.stdio;
struct Foo { int i; this(int i){ this.i = i; writeln("init: ", i); } this(ref typeof(this) rhs){ this.i = rhs.i; writeln("copy: ", i); } ~this() { writeln("~dtor:", i); } } void main(){ Foo[] foos; foos ~= Foo(1); while(foos.capacity > foos.length) foos ~= Foo(0); foos ~= Foo(2); import core.memory; GC.collect(); } ``` result: ``` init: 1 init: 2 ~dtor:1 ~dtor:2 ~dtor:1 ``` First Foo is destructed 2x.