How to declare trait function with associated type in result

I believe this does what you want:

trait Backend<'a> {
    type Canvas: 'a;
    
    fn canvas(&'a mut self) -> Self::Canvas;
}