2 ms·
> this function should take a Writer I think some of this can be achieved in the function body by checking the incoming generic types via Zig's comptime type i
by flohofwoe 4y ago
> this function should take a Writer
I think some of this can be achieved in the function body by checking the incoming generic types via Zig's comptime type inspection features (see: https://ziglang.org/documentation/master/#typeInfo https://ziglang.org/documentation/master/#typeInfo). Kinda like 'comptime type-asserts'. Together with @compileError this would at least provide more useful error messages if a generic type doesn't have the expected features.
PS: I think it's important to not look at Zig's generic feature in isolation, instead it goes hand in hand with comptime and reflection.
- Ar-Curunir 4y agoHow do you query if the type implements a particular method?
- flohofwoe 4y agoThere's a std.meta.trait.hasFn() comptime helper function in the stdlib: https://www.godbolt.org/z/xe98Md74r https://www.godbolt.org/z/xe98Md74r E.g. if you change the method 'bla' to something else: https://www.godbolt.org/z/77118zG1K https://www.godbolt.org/z/77118zG1K ...there's probably more advanced helper functions in the same std.meta.trait module, I haven't explored that yet. Also, disclaimer: I haven't dabbled much yet with Zig generics, don't know if this is the proper style (in this case it's probably better to get rid of T entirely and just use anytype for the obj argument).