6 ms·
Couldn't you just pass in the (other) borrowed field as an argument for the function? If you need it to work without adding the argument when called outside of
by entropicdrifter 7y ago
Couldn't you just pass in the (other) borrowed field as an argument for the function? If you need it to work without adding the argument when called outside of the class, you could overload it with a version that borrows the field and passes it to the version that takes the field as an argument, right?
I'm newish to Rust, so this is just an intuitive guess. Please let me know if I'm wrong.
- Rusky 7y agoYes, that's the usual workaround.
- dunkelheit 7y agoYes, it works, but feels unnatural. I also don't like the possibility (quite remote, I admit) that the function gets called with a field from another instance.
- esotericn 7y agoThe latter case should be impossible if the method is private?
- saghm 7y agoIn Rust, privacy isn't enforced like that. Private just means that things outside the module can't access them. There's no concept of privacy at the instance level.
- esotericn 7y agoYes. So don't make any methods that could potentially be passed incorrect arguments public.
- saghm 7y agoThat still doesn't preclude the possibility that within the module the function gets called with a field from another instance. I think the idea is that by making it a method that just takes a reference to self, it's impossible to accidentally mutate a field on a different instance, while taking a reference to the field itself doesn't prevent the programmer from accidentally calling it with the wrong instance of the field.