cargo-port 0.2.0

A TUI for inspecting and managing Rust projects
use tui_pane::PaneRegistry;

use super::RenderRegistry;
use crate::tui::panes::PaneId;
use crate::tui::render_context::PaneRenderCtx;

impl PaneRegistry for RenderRegistry<'_> {
    type Ctx<'ctx> = PaneRenderCtx<'ctx>;
    type PaneId = PaneId;

    fn pane_mut(
        &mut self,
        id: Self::PaneId,
    ) -> Option<&mut dyn for<'ctx> tui_pane::Renderable<Self::Ctx<'ctx>>> {
        let pane: &mut dyn for<'ctx> tui_pane::Renderable<Self::Ctx<'ctx>> = match id {
            PaneId::Package => self.package,
            PaneId::Lang => self.lang,
            PaneId::Cpu => self.cpu,
            PaneId::Git => self.git,
            PaneId::Targets => self.targets,
            PaneId::ProjectList => self.project_list,
            PaneId::Output => self.output,
            PaneId::Lints => self.lint,
            PaneId::CiRuns => self.ci,
            PaneId::Settings => self.settings_pane,
            PaneId::Keymap | PaneId::Toasts | PaneId::Finder | PaneId::Sccache => return None,
        };
        Some(pane)
    }
}