fork download
  1. import std.stdio;
  2. void main() {
  3. int[] original;
  4. original.reserve(5);
  5. writeln("orig cap: ", original.capacity);
  6. writeln("orig len: ", original.length);
  7.  
  8. auto ptr = original.ptr;
  9. original ~= 0;
  10. original ~= 1;
  11. original ~= 2;
  12. writeln("orig cap: ", original.capacity); // 7
  13. writeln("orig len: ", original.length); // 3
  14. assert(ptr == original.ptr);
  15.  
  16. auto slice = original[1..$];
  17. writeln("slice cap: ", slice.capacity); // 6
  18. writeln("slice len: ", slice.length); // 2
  19. original[0]++;
  20. slice[0]++;
  21. slice[1]++;
  22. writeln("orig: ", original); // [1, 2, 3]
  23.  
  24. slice ~= 4;
  25. writeln("orig cap: ", original.capacity); // 0
  26. writeln("orig len: ", original.length); // 3
  27. writeln("slice cap: ", slice.capacity); // 6
  28. writeln("slice len: ", slice.length); // 3
  29. writeln("slice: ", slice); // [2, 3, 4]
  30.  
  31. original ~= -1;
  32. writeln("orig: ", original); // [1, 2, 3, -1]
  33. writeln("slice: ", slice); // [2, 3, 4]
  34.  
  35. slice = original[1..$];
  36. slice ~= 4;
  37. writeln("slice: ", slice); // [2, 3, -1, 4]
  38. assumeSafeAppend(original);
  39. original ~= -1;
  40. writeln("orig: ", original); // [1, 2, 3, -1, -1]
  41. writeln("slice: ", slice); // [2, 3, -1, -1]
  42.  
  43. auto str = "Hello World";
  44. const(char)[] strSlice = str[0..5];
  45. strSlice ~= "/bye";
  46. writeln(str); // "Hello World"
  47.  
  48. }
Success #stdin #stdout 0.02s 2080KB
stdin
Standard input is empty
stdout
orig cap: 7
orig len: 0
orig cap: 7
orig len: 3
slice cap: 6
slice len: 2
orig: 1 2 3
orig cap: 0
orig len: 3
slice cap: 6
slice len: 3
slice: 2 3 4
orig: 1 2 3 -1
slice: 2 3 4
slice: 2 3 -1 4
orig: 1 2 3 -1 -1
slice: 2 3 -1 -1
Hello World