Paolo Invernizzi: > What's the best way to find an element into an array, drop it and shrink > the array inplace, in D2?
Inside the module std.array there is a commented out function that allows to remove items. I don't know why it is commented out, maybe there is some bug. You can find the index with the indexOf(). Then if your items don't have a postblit (and you can test for that), then you may just need std.c.string.memmove to shift the items. If the items are structs with a postblit, then I presume the best thing you can do is to copy each item in a normal loop. After that "static if", you decrease the array length by 1, and return the item saved in a temporary variable. ------------------------------ Simen kjaeraas: > T extract( T )( ref T[] haystack, const T element ) { > auto loc = indexOf( haystack, element ); > T result = haystack[loc]; > haystack = haystack[0..loc] ~ haystack[loc+1..$]; > return result; > } It's not in-place, as requested by Paolo. Bye, bearophile