* Continuing here because I need to share my progress (or lack of progress thereof) with somebody, even if it is just me listening to myself. :) My ideas from above ^^^ based on your pool idea do work... But... lifetime invariance just did bite my a\*\* again! The problem is that - **in reality** - the `Fabrics` struct in the Rust playground from above is hidden behind a... `RefCell>` (Or a `Mutex>` if you wish... it is the same w.r.t. lifetime variance after all.) And because of that... `'a` becomes invariant, even if it is all just `&'a refs` and not `&'a mut refs` everywhere. So my dream of keeping ```rust struct Matter<'a> { foo: &'a str, fabrics: RefCell>, // Fabrics is now lifetimed } ``` ... does not work. And the whole excercise was to keep `Matter` with a single, covariant lifetime `'a`. It should be instead: ```rust struct Matter<'a, 'b> { foo: &'a str, fabrics: RefCell>, // Separate lifetime, because of invariance } ``` ... which is exactly what I wanted to avoid with the "pools" idea... :(((