iced-yoda/src/lib.rs

44 lines
1.1 KiB
Rust
Raw Normal View History

pub use iced_wgpu::{Primitive, Renderer};
2019-10-03 00:01:45 +02:00
pub use iced_winit::{
button, slider, text, winit, Align, Background, Checkbox, Color, Image,
2019-10-03 00:08:16 +02:00
Justify, Length, Radio, Slider, Text,
2019-10-03 00:01:45 +02:00
};
pub type Element<'a, Message> = iced_winit::Element<'a, Message, Renderer>;
pub type Row<'a, Message> = iced_winit::Row<'a, Message, Renderer>;
pub type Column<'a, Message> = iced_winit::Column<'a, Message, Renderer>;
pub type Button<'a, Message> = iced_winit::Button<'a, Message, Renderer>;
2019-10-03 00:01:45 +02:00
pub trait Application {
2019-10-03 00:01:45 +02:00
type Message;
fn update(&mut self, message: Self::Message);
fn view(&mut self) -> Element<Self::Message>;
fn run(self)
2019-10-03 00:01:45 +02:00
where
2019-10-03 01:59:16 +02:00
Self: 'static + Sized,
2019-10-03 00:01:45 +02:00
{
iced_winit::Application::run(Instance(self))
2019-10-03 00:01:45 +02:00
}
}
struct Instance<A: Application>(A);
impl<A> iced_winit::Application for Instance<A>
where
A: Application,
{
type Renderer = Renderer;
type Message = A::Message;
fn update(&mut self, message: Self::Message) {
self.0.update(message);
}
fn view(&mut self) -> Element<Self::Message> {
self.0.view()
}
}