Why does ParseBoolError
have the _priv
field:
pub struct ParseBoolError {
_priv: (),
}
I don't think that the _priv
field is used.
Struct members, including nested classes and structs, can be declared public , internal , or private . Class members, including nested classes and structs, can be public , protected internal , protected , internal , private protected , or private .
In a normal scenario, the visibility of the struct in Rust is private and it can be made public by making use of the pub modifier. It should be noted that this case of visibility only makes sense when we are trying to access the struct fields from outside the module, from where it is defined.
You can't create an instance of a struct if it has private fields. This is just a trick to prevent ParseBoolError
from being constructed in user code.
One reason to do this is for forwards compatibility. If users could create it with:
let error = ParseBoolError {};
then a future version of ParseBoolError
couldn't add fields without breaking that code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With