On Tuesday, 17 October 2023 at 17:27:19 UTC, Joakim G. wrote:
For some reason I cannot remove an element from a DList. I tried several range approaches but to no avail. I'm a noob.

In the end I did this:

```
private void removeFromWaitingQueue(uint jid) {
    auto arr = waitingQueue[].array;
    arr = arr.remove!(job => job.jid == jid);
    waitingQueue.clear();
    foreach(job; arr) {
        waitingQueue.insertBack(job);
    }
}
```

Any hints?

/J

```d
import std.container : DList;
import std.algorithm : find;
import std.range : take;
import std.stdio : writeln;
import std.range : take;
struct Job
{
    int id;
}
int main(string[] args)
{
    auto list = DList!Job(Job(1), Job(2), Job(3));
    int idToDelete = 2;
auto toRemove = list[].find!(job => job.id == idToDelete).take(1);
    if (!toRemove.empty)
        list.linearRemove(toRemove);

    foreach (i; list[])
    {
        writeln(i);
    }

    return 0;
}
```
works for me ... see https://run.dlang.io/is/OtX820 for a live version.

Kind regards,
Christian

Reply via email to