From cb0727c0f09bd5e9e3e71fbead50ed65fcd54fab Mon Sep 17 00:00:00 2001 From: daa84 Date: Thu, 17 May 2018 16:44:11 +0300 Subject: [PATCH] Use Default trait were possible --- src/plug_manager/manager.rs | 8 ++++---- src/plug_manager/store.rs | 17 ++++++++--------- src/project.rs | 6 +----- src/settings.rs | 8 +++----- src/ui.rs | 8 ++------ 5 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/plug_manager/manager.rs b/src/plug_manager/manager.rs index ef96a86..c18d726 100644 --- a/src/plug_manager/manager.rs +++ b/src/plug_manager/manager.rs @@ -16,7 +16,7 @@ impl Manager { let (plug_manage_state, store) = if Store::is_config_exists() { (PlugManageState::NvimGtk, Store::load()) } else { - (PlugManageState::Unknown, Store::empty()) + (PlugManageState::Unknown, Default::default()) }; Manager { @@ -45,14 +45,14 @@ impl Manager { self.store = Store::load_from_plug(&self.vim_plug); self.plug_manage_state = PlugManageState::VimPlug; } else { - self.store = Store::empty(); + self.store = Default::default(); } } PlugManageState::NvimGtk => { if Store::is_config_exists() { self.store = Store::load(); } else { - self.store = Store::empty(); + self.store = Default::default(); } } PlugManageState::VimPlug => { @@ -60,7 +60,7 @@ impl Manager { self.store = Store::load(); self.plug_manage_state = PlugManageState::NvimGtk; } else { - self.store = Store::empty(); + self.store = Default::default(); } } } diff --git a/src/plug_manager/store.rs b/src/plug_manager/store.rs index a18b114..4ad47a9 100644 --- a/src/plug_manager/store.rs +++ b/src/plug_manager/store.rs @@ -3,6 +3,7 @@ use toml; use settings::SettingsLoader; use super::vim_plug; +#[derive(Default)] pub struct Store { settings: Settings, } @@ -20,15 +21,11 @@ impl Store { Store { settings: Settings::load() } } - pub fn empty() -> Self { - Store { settings: Settings::empty() } - } - pub fn load_from_plug(vim_plug: &vim_plug::Manager) -> Self { let settings = match vim_plug.get_plugs() { Err(msg) => { error!("{}", msg); - Settings::empty() + Default::default() } Ok(plugs) => { let plugs = plugs @@ -106,15 +103,17 @@ impl Settings { } } -impl SettingsLoader for Settings { - const SETTINGS_FILE: &'static str = "plugs.toml"; - - fn empty() -> Self { +impl Default for Settings { + fn default() -> Self { Settings { plugs: vec![], enabled: false, } } +} + +impl SettingsLoader for Settings { + const SETTINGS_FILE: &'static str = "plugs.toml"; fn from_str(s: &str) -> Result { toml::from_str(&s).map_err(|e| format!("{}", e)) diff --git a/src/project.rs b/src/project.rs index 863efba..278b852 100644 --- a/src/project.rs +++ b/src/project.rs @@ -580,7 +580,7 @@ impl Entry { use settings::SettingsLoader; use toml; -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Default)] struct ProjectSettings { projects: Vec, } @@ -607,10 +607,6 @@ impl ProjectEntrySettings { impl SettingsLoader for ProjectSettings { const SETTINGS_FILE: &'static str = "projects.toml"; - fn empty() -> ProjectSettings { - ProjectSettings { projects: vec![] } - } - fn from_str(s: &str) -> Result { toml::from_str(&s).map_err(|e| format!("{}", e)) } diff --git a/src/settings.rs b/src/settings.rs index 11990bd..b3b205b 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -111,11 +111,9 @@ use serde; use dirs; -pub trait SettingsLoader: Sized + serde::Serialize { +pub trait SettingsLoader: Sized + serde::Serialize + Default { const SETTINGS_FILE: &'static str; - fn empty() -> Self; - fn from_str(s: &str) -> Result; fn load() -> Self { @@ -123,7 +121,7 @@ pub trait SettingsLoader: Sized + serde::Serialize { Ok(settings) => settings, Err(e) => { error!("{}", e); - Self::empty() + Default::default() } } } @@ -154,7 +152,7 @@ fn load_from_file(path: &Path) -> Result { )?; T::from_str(&contents) } else { - Ok(T::empty()) + Ok(Default::default()) } } diff --git a/src/ui.rs b/src/ui.rs index 14ef1f0..88c07a1 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -445,8 +445,8 @@ struct WindowState { sidebar_width: i32, } -impl WindowState { - pub fn new() -> Self { +impl Default for WindowState { + fn default() -> Self { WindowState { current_width: DEFAULT_WIDTH, current_height: DEFAULT_HEIGHT, @@ -460,10 +460,6 @@ impl WindowState { impl SettingsLoader for WindowState { const SETTINGS_FILE: &'static str = "window.toml"; - fn empty() -> WindowState { - WindowState::new() - } - fn from_str(s: &str) -> Result { toml::from_str(&s).map_err(|e| format!("{}", e)) }