Do any workarounds exist for the following borrow checker issue?

⚓ Rust    📅 2025-09-27    👤 surdeus    👁️ 8      

surdeus

Warning

This post was published 34 days ago. The information described in this article may have changed.

I ran into this problem and I'm quite sure the is not a mistake on my end but a shortcoming in the borrow checker.

type Key = (); // todo! will become a kind of keyboard input result, like a char
type Action<T> = for <'a> fn(<T as Scene>::ActionArg<'a>) -> <T as Scene>::ActionRes;

trait Scene
{
    type CursorPosition;
    type ActionArg<'this>;
    type ActionRes;
    fn getPossibleActions(cursor : Self::CursorPosition) -> &'static [(Key, Action<Self>)];
}

This does not compile because of getPossibleActions. To me, it seems like a perfectly reasonable thing to ask without restricting Self to 'static, which the compiler is now asking me to do. In fact, I am certain that Self is not restricted to 'static.

Is there a way to fix this without giving CursorPosition a generic associated lifetime?

3 posts - 3 participants

Read full topic

🏷️ Rust_feed