Just wondering if this exists in the standard library.

I made a function "Implements!(T,I)" that returns true is a given type "T" implements the interface "I".

http://dpaste.dzfl.pl/d7a727fd

I've found it really helps with keeping some code clean such as the below:
void main() {
        int i = 0x34342343;
        writebytes(i);
}


//enum Order { Big };
//interface IRawBytes { ubyte[] bytes(Order); }
interface IRawBytes { ubyte[] bytes(); }

void writebytes(T)(T item) if (Implements!(T, IRawBytes)) {
        import std.stdio : writeln;
        writeln(item.bytes);
}
ubyte[] bytes(ref int i) {
        ubyte* ptr;
        ptr = cast(ubyte*)&i;
        return ptr[0..i.sizeof];
}

If you decide that IRawBytes.bytes should start taking an Order parameter you get the same benefits you would have got if you had used classes with an interface.

Reply via email to