On Wednesday, 15 January 2014 at 17:13:37 UTC, Meta wrote:
auto inWrap(T)(T[] arr)
{
static struct InWrapper
{
import std.typecons: Nullable;
private T[] payload;
Nullable!size_t opBinaryRight(string op: "in")(T val)
{
Nullable!size_t index;
foreach (i, element; payload)
{
if (element == val)
{
index = i;
return index;
}
}
return index;
}
}
return InWrapper(arr);
}
void main()
{
auto arr = [0, 1, 2, 3, 4];
auto i = 2 in arr.inWrap;
assert(!i.isNull);
assert(i == 2);
}
The in-operator should return T* for consistency with the
build-in ones.