File: array.d

package info (click to toggle)
tilix 1.9.6-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,444 kB
  • sloc: xml: 1,175; sh: 285; python: 127; perl: 72; ansic: 53; makefile: 6
file content (35 lines) | stat: -rw-r--r-- 953 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
 * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not
 * distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
module gx.util.array;

import std.algorithm;
import std.array;

/**
 * Removes the specified element from the array (once).
 *
 * Params:
 *  array   = The array to remove the item from.
 *  element = The item to look for and remove.
 *
 * Adapted from grestful, modified to explicitly check index
 */
void remove(T)(ref T[] array, T element) {
    auto index = array.countUntil(element);
    while (index >= 0) {
        array[index] = null;
        array = std.algorithm.remove(array, index);
        index = array.countUntil(element);
    }
}

unittest {
    string[] test = ["test1", "test2", "test3"];

    remove(test, "test1");
    assert(test == ["test2", "test3"]);
    remove(test, "test4");
    assert(test == ["test2", "test3"]);
}