BCFC - trouble porting from OO languages

the Borrow Checker Fight Club:
first rule: you don't speak about BCFC ...

My first Rust project is a port of an experimental architecture for Prolog execution.

There are 2 clone() in the inner, hottest loop (here and there) I have been forced to introduce, while I'd like - for performance reasons - to take a `&mut' to the hosted objects... needless to say, it's forbidden.

I wonder if 'flattening' the whole - that is, instead of implementing pub struct Engine { ... spines: Spines, ...}, moving pub spines: Spines at module level, could help.

Just in case this make sense, will I be allowed to start/manage parallel executions ?