import std.stdio;
void main() {
int[] original;
original.reserve(5);
writeln("orig cap: ", original.capacity);
writeln("orig len: ", original.length);
auto ptr = original.ptr;
original ~= 0;
original ~= 1;
original ~= 2;
writeln("orig cap: ", original.capacity); // 7
writeln("orig len: ", original.length); // 3
assert(ptr == original.ptr);
auto slice = original[1..$];
writeln("slice cap: ", slice.capacity); // 6
writeln("slice len: ", slice.length); // 2
original[0]++;
slice[0]++;
slice[1]++;
writeln("orig: ", original); // [1, 2, 3]
slice ~= 4;
writeln("orig cap: ", original.capacity); // 0
writeln("orig len: ", original.length); // 3
writeln("slice cap: ", slice.capacity); // 6
writeln("slice len: ", slice.length); // 3
writeln("slice: ", slice); // [2, 3, 4]
original ~= -1;
writeln("orig: ", original); // [1, 2, 3, -1]
writeln("slice: ", slice); // [2, 3, 4]
slice = original[1..$];
slice ~= 4;
writeln("slice: ", slice); // [2, 3, -1, 4]
assumeSafeAppend(original);
original ~= -1;
writeln("orig: ", original); // [1, 2, 3, -1, -1]
writeln("slice: ", slice); // [2, 3, -1, -1]
auto str = "Hello World";
const(char)[] strSlice = str[0..5];
strSlice ~= "/bye";
writeln(str); // "Hello World"
}
aW1wb3J0IHN0ZC5zdGRpbzsKdm9pZCBtYWluKCkgewogICAgaW50W10gb3JpZ2luYWw7CiAgICBvcmlnaW5hbC5yZXNlcnZlKDUpOwogICAgd3JpdGVsbigib3JpZyBjYXA6ICIsIG9yaWdpbmFsLmNhcGFjaXR5KTsKICAgIHdyaXRlbG4oIm9yaWcgbGVuOiAiLCBvcmlnaW5hbC5sZW5ndGgpOwoKICAgIGF1dG8gcHRyID0gb3JpZ2luYWwucHRyOwogICAgb3JpZ2luYWwgfj0gMDsKICAgIG9yaWdpbmFsIH49IDE7CiAgICBvcmlnaW5hbCB+PSAyOwogICAgd3JpdGVsbigib3JpZyBjYXA6ICIsIG9yaWdpbmFsLmNhcGFjaXR5KTsgLy8gNwogICAgd3JpdGVsbigib3JpZyBsZW46ICIsIG9yaWdpbmFsLmxlbmd0aCk7IC8vIDMKICAgIGFzc2VydChwdHIgPT0gb3JpZ2luYWwucHRyKTsKICAgIAogICAgYXV0byBzbGljZSA9IG9yaWdpbmFsWzEuLiRdOwogICAgd3JpdGVsbigic2xpY2UgY2FwOiAiLCBzbGljZS5jYXBhY2l0eSk7IC8vIDYKICAgIHdyaXRlbG4oInNsaWNlIGxlbjogIiwgc2xpY2UubGVuZ3RoKTsgLy8gMgogICAgb3JpZ2luYWxbMF0rKzsKICAgIHNsaWNlWzBdKys7CiAgICBzbGljZVsxXSsrOwogICAgd3JpdGVsbigib3JpZzogIiwgb3JpZ2luYWwpOyAvLyBbMSwgMiwgM10KCiAgICBzbGljZSB+PSA0OwogICAgd3JpdGVsbigib3JpZyBjYXA6ICIsIG9yaWdpbmFsLmNhcGFjaXR5KTsgLy8gMAogICAgd3JpdGVsbigib3JpZyBsZW46ICIsIG9yaWdpbmFsLmxlbmd0aCk7IC8vIDMKICAgIHdyaXRlbG4oInNsaWNlIGNhcDogIiwgc2xpY2UuY2FwYWNpdHkpOyAvLyA2CiAgICB3cml0ZWxuKCJzbGljZSBsZW46ICIsIHNsaWNlLmxlbmd0aCk7IC8vIDMKICAgIHdyaXRlbG4oInNsaWNlOiAiLCBzbGljZSk7IC8vIFsyLCAzLCA0XQoKICAgIG9yaWdpbmFsIH49IC0xOwogICAgd3JpdGVsbigib3JpZzogIiwgb3JpZ2luYWwpOyAvLyBbMSwgMiwgMywgLTFdCiAgICB3cml0ZWxuKCJzbGljZTogIiwgc2xpY2UpOyAvLyBbMiwgMywgNF0KCiAgICBzbGljZSA9IG9yaWdpbmFsWzEuLiRdOwogICAgc2xpY2Ugfj0gNDsKICAgIHdyaXRlbG4oInNsaWNlOiAiLCBzbGljZSk7IC8vIFsyLCAzLCAtMSwgNF0KICAgIGFzc3VtZVNhZmVBcHBlbmQob3JpZ2luYWwpOwogICAgb3JpZ2luYWwgfj0gLTE7CiAgICB3cml0ZWxuKCJvcmlnOiAiLCBvcmlnaW5hbCk7IC8vIFsxLCAyLCAzLCAtMSwgLTFdCiAgICB3cml0ZWxuKCJzbGljZTogIiwgc2xpY2UpOyAvLyBbMiwgMywgLTEsIC0xXQoKICAgIGF1dG8gc3RyID0gIkhlbGxvIFdvcmxkIjsKICAgIGNvbnN0KGNoYXIpW10gc3RyU2xpY2UgPSBzdHJbMC4uNV07CiAgICBzdHJTbGljZSB+PSAiL2J5ZSI7CiAgICB3cml0ZWxuKHN0cik7IC8vICJIZWxsbyBXb3JsZCIKCn0=