pub trait Program: Sized {
    type Message: Debug + Send;
    type Theme: DefaultStyle;
    type Executor: Executor;
    type Renderer: Renderer + Renderer;
    type Flags;
    // Required methods
    fn new(flags: Self::Flags) -> (Self, Task<Self::Message>);
    fn title(&self, window: Id) -> String;
    fn update(&mut self, message: Self::Message) -> Task<Self::Message>;
    fn view(
        &self,
        window: Id,
    ) -> Element<'_, Self::Message, Self::Theme, Self::Renderer>;
    fn theme(&self, window: Id) -> Self::Theme;
    // Provided methods
    fn style(&self, theme: &Self::Theme) -> Appearance { ... }
    fn subscription(&self) -> Subscription<Self::Message> { ... }
    fn scale_factor(&self, window: Id) -> f64 { ... }
    fn with_program<T>(&self, f: impl Fn(&Self) -> T) -> T { ... }
}Expand description
An interactive, native, cross-platform, multi-windowed application.
This trait is the main entrypoint of multi-window Iced. Once implemented, you can run
your GUI application by simply calling run. It will run in
its own window.
A Program can execute asynchronous actions by returning a
Task in some of its methods.
When using a Program with the debug feature enabled, a debug view
can be toggled by pressing F12.
Required Associated Types§
Sourcetype Theme: DefaultStyle
 
type Theme: DefaultStyle
The theme used to draw the Program.
Sourcetype Executor: Executor
 
type Executor: Executor
The Executor that will run commands and subscriptions.
The default executor can be a good starting point!
Required Methods§
Sourcefn new(flags: Self::Flags) -> (Self, Task<Self::Message>)
 
fn new(flags: Self::Flags) -> (Self, Task<Self::Message>)
Initializes the Program with the flags provided to
run as part of the Settings.
Here is where you should return the initial state of your app.
Additionally, you can return a Task if you need to perform some
async action in the background on startup. This is useful if you want to
load state from a file, perform an initial HTTP request, etc.
Sourcefn title(&self, window: Id) -> String
 
fn title(&self, window: Id) -> String
Returns the current title of the Program.
This title can be dynamic! The runtime will automatically update the title of your application when necessary.
Provided Methods§
Sourcefn style(&self, theme: &Self::Theme) -> Appearance
 
fn style(&self, theme: &Self::Theme) -> Appearance
Returns the Style variation of the Theme.
Sourcefn subscription(&self) -> Subscription<Self::Message>
 
fn subscription(&self) -> Subscription<Self::Message>
Returns the event Subscription for the current state of the
application.
The messages produced by the Subscription will be handled by
update.
A Subscription will be kept alive as long as you keep returning it!
By default, it returns an empty subscription.
Sourcefn scale_factor(&self, window: Id) -> f64
 
fn scale_factor(&self, window: Id) -> f64
Returns the scale factor of the window of the Program.
It can be used to dynamically control the size of the UI at runtime (i.e. zooming).
For instance, a scale factor of 2.0 will make widgets twice as big,
while a scale factor of 0.5 will shrink them to half their size.
By default, it returns 1.0.
fn with_program<T>(&self, f: impl Fn(&Self) -> T) -> T
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.