ratapp 0.2.0

A tiny framework to build multi-screen async applications with ratatui.
Documentation
use std::future;

use ratatui::{Frame, crossterm::event::Event};

use crate::navigator::Navigator;

pub trait ScreenState: Default {
    type ID: Copy;

    fn draw(&mut self, frame: &mut Frame);
    async fn on_event(&mut self, event: Event, navigator: &Navigator<Self::ID>);
    async fn on_enter(&mut self);
    async fn on_exit(&mut self);
    async fn rerender(&mut self);
    fn navigate(&mut self, id: &Self::ID);
}

pub trait Screen<ID>: Default {
    fn draw(&mut self, frame: &mut Frame);
    async fn on_event(&mut self, event: Event, navigator: &Navigator<ID>);
    async fn on_enter(&mut self) {}
    async fn on_exit(&mut self) {}
    async fn rerender(&mut self) {
        future::pending::<()>().await;
    }
}