Underscores are just wannabe private fields. Zig doesn’t have private fields, and you don’t need to pretend Zig has private fields. Underscores in Zig code are a dead giveaway of code written by newbies. No need for underscores, no need for helper methods - it’s not that hard to use the interface correctly.
If you have a hard time understanding this stuff, please take a few moments to read the source code and understand the reason behind why things work this way. It all comes down to simplicity. Other languages hide complex details from you; Zig keeps things simpler but in exchange requires you to understand those details.