pub trait DumbComponent {
// Required method
fn render(&mut self, area: Layout, buf: &mut Buffer);
// Provided methods
fn register_action_tx(&mut self, action_tx: Sender<Action>) { ... }
fn handle_event<'life0, 'async_trait>(
&'life0 mut self,
event: Action,
) -> Pin<Box<dyn Future<Output = Result<(), AppError>> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
}