I'm working on a (fairly complex) system where I have a certain trait implemented for async fns so that I can use a trait object of this trait to store the async fns and call them later (it's for an ECS implementation similar to Bevy's, where plain rust functions act as Systems, except I'm trying to make it work with async functions as well.) In one of my asset-related systems, if I call another async function (also part of another, asset-loading-related trait) and .await it, suddenly the compiler doesn't recognize the outer system as an implementor of the trait I mentioned initially.
I can post implementation details if necessary, but my main question as per the title is, are there any kind of advanced situations (possibly involving higher ranked trait bounds) where .awaiting a future inside another async function could change the outer function's type enough to confuse the type checker?
I know this is a fairly complicated explanation, so let me know if I need to elaborate on anything. Really I just want to know if I'm looking at the right problem. Thanks in advance. :)