▲ | teo_zero 2 days ago | |
What disturbs me is the need to Init() everything. In the Vec type (the only one I've analyzed, actually) all it does is to fill everything with zeros and add a "magic" field certifying that the initialization happened. So why don't simply fill everything with zeros, which can be achieved with ={} if you're super modern or ={0} if you're not, and then drop the check for the magic field? Of course that wouldn't detect a missing intialization, but neither is it detected for any standard type. | ||
▲ | brightprogramer 2 days ago | parent [-] | |
It is a bit crazy but forcing this kinda makes a habit. That way, a habitual user will tend to initialize other variable types as well. That's why I call it a standard, because the library has its own coding style. Take the ownership semantics explained in concepts section of README for example. I provide a way to very clearly specify ownership. Also the init() instantly detects bugs related to uninitialized struts. When they do happen, sometimes very deep in the code they take a lot of time. This is also one of the reasons why there are so many ValidateX checks in implementation code. Try to catch bugs faster. |