diff --git a/util.d b/util.d index 6c91a09..6a529ea 100644 --- a/util.d +++ b/util.d @@ -13,6 +13,21 @@ import std.string; import core.stdc.string : memset; import core.simd; +T[] +CastStr(T)(string str) +{ + T[] arr = (cast(T*)str.ptr)[0 .. str.length]; + return arr; +} + +T[] +CastArr(T, U)(U[] input_array) +{ + static assert(T.sizeof == U.sizeof); + T[] output_array = (cast(T*)input_array.ptr)[0 .. input_array.length]; + return output_array; +} + void Logf(Args...)(string fmt, Args args) { @@ -1017,4 +1032,10 @@ unittest assert(stack.top == &nil); } + + { // Casts + u8[] arr = CastStr!(u8)("Test"); + char[] char_arr = ['a', 'b']; + arr = CastArr!(u8)(char_arr); + } }