diff --git a/src/main.rs b/src/main.rs index 62f5087..a691062 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,13 +79,9 @@ impl State { } } - Key::Character("o") => match self.pick_and_load_image() { - Ok(task) => { - self.error = None; - return task; - } - Err(e) => self.error = Some(e), - }, + Key::Character("o") => { + return self.pick_and_load_image(); + } Key::Character("r") => { match self.image.as_ref() { @@ -119,13 +115,9 @@ impl State { }, Message::Event(iced::Event::Window(window_event)) => match window_event { - window::Event::FileDropped(file) => match self.load_image(file) { - Ok(task) => { - self.error = None; - return task; - } - Err(e) => self.error = Some(e), - }, + window::Event::FileDropped(file) => { + return self.load_image(file); + } // ignore unused window events _ => {} @@ -138,14 +130,28 @@ impl State { Task::none() } - fn load_image(&mut self, path: impl AsRef) -> Result, String> { - utils::load_image(path).and_then(|image| { - self.image = Some(image); - Ok(self.allocate_image()) - }) + #[must_use] + fn load_image(&mut self, path: impl AsRef) -> Task { + let task; + (self.error, task) = match utils::load_image(path) { + Ok(image) => { + self.image = Some(image); + (None, self.allocate_image()) + } + Err(e) => (Some(e), Task::none()), + }; + + task } - fn pick_and_load_image(&mut self) -> Result, String> { - utils::pick_image().and_then(|path| self.load_image(path)) + #[must_use] + fn pick_and_load_image(&mut self) -> Task { + let task; + (self.error, task) = match utils::pick_image() { + Ok(path) => (None, self.load_image(path)), + Err(e) => (Some(e), Task::none()), + }; + + task } fn save_image(&mut self) { @@ -170,18 +176,11 @@ impl State { fn subscription(&self) -> Subscription { event::listen().map(Message::Event) } - fn title(&self) -> String { - match self.image.as_ref() { - Some(image) => format!("imagey {}x{}", image.width(), image.height()), - None => format!("imagey"), - } - } } fn main() -> Result<(), iced::Error> { iced::application(State::new, State::update, State::view) .subscription(State::subscription) - .title(State::title) .theme(Theme::custom( "custom", theme::Palette {