use crate::custom_events::*;
use crate::dragdrop::*;
use crate::presentation::*;
use crate::renderer::*;
use crate::session::*;
pub trait HasCustomEvents {
fn custom_events(&self) -> &'_ CustomEvents;
}
pub trait HasDragDrop {
fn dragdrop(&self) -> &'_ DragDrop;
}
pub trait HasPresentation {
fn presentation(&self) -> &'_ Presentation;
}
pub trait HasRenderer {
fn renderer(&self) -> &'_ Renderer;
}
pub trait HasSession {
fn session(&self) -> &'_ Session;
}
impl HasSession for Session {
fn session(&self) -> &'_ Session {
self
}
}
pub trait StateProvider {
type State: Clone + 'static;
fn clone_state(&self) -> Self::State;
}