pub trait Widget {
// Required methods
fn layout(&mut self, bounds: Rect, theme: &Theme);
fn draw(&self, theme: &Theme) -> Vec<DrawRect>;
fn handle_event(&mut self, event: &WidgetEvent);
fn rect(&self) -> Rect;
// Provided method
fn draw_text(&self, _theme: &Theme) -> Vec<TextCmd> { ... }
}