Approaches to things like this are discussed in this other thread. I feel like I’ve been linking to it a bit much lately but I’d have nothing new to say here .
Using explicit field borrows and associated functions (rather than methods) will make things easier.