I made a crate to handle any of these cases so I wouldn't have to manually write workarounds every time I need negative trait bounds. It makes the code much easier to reason about, which one quickly comes to appreciate in more complex scenarios