Use Default trait were possible
This commit is contained in:
parent
f7ee2ea3d8
commit
cb0727c0f0
@ -16,7 +16,7 @@ impl Manager {
|
|||||||
let (plug_manage_state, store) = if Store::is_config_exists() {
|
let (plug_manage_state, store) = if Store::is_config_exists() {
|
||||||
(PlugManageState::NvimGtk, Store::load())
|
(PlugManageState::NvimGtk, Store::load())
|
||||||
} else {
|
} else {
|
||||||
(PlugManageState::Unknown, Store::empty())
|
(PlugManageState::Unknown, Default::default())
|
||||||
};
|
};
|
||||||
|
|
||||||
Manager {
|
Manager {
|
||||||
@ -45,14 +45,14 @@ impl Manager {
|
|||||||
self.store = Store::load_from_plug(&self.vim_plug);
|
self.store = Store::load_from_plug(&self.vim_plug);
|
||||||
self.plug_manage_state = PlugManageState::VimPlug;
|
self.plug_manage_state = PlugManageState::VimPlug;
|
||||||
} else {
|
} else {
|
||||||
self.store = Store::empty();
|
self.store = Default::default();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PlugManageState::NvimGtk => {
|
PlugManageState::NvimGtk => {
|
||||||
if Store::is_config_exists() {
|
if Store::is_config_exists() {
|
||||||
self.store = Store::load();
|
self.store = Store::load();
|
||||||
} else {
|
} else {
|
||||||
self.store = Store::empty();
|
self.store = Default::default();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PlugManageState::VimPlug => {
|
PlugManageState::VimPlug => {
|
||||||
@ -60,7 +60,7 @@ impl Manager {
|
|||||||
self.store = Store::load();
|
self.store = Store::load();
|
||||||
self.plug_manage_state = PlugManageState::NvimGtk;
|
self.plug_manage_state = PlugManageState::NvimGtk;
|
||||||
} else {
|
} else {
|
||||||
self.store = Store::empty();
|
self.store = Default::default();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ use toml;
|
|||||||
use settings::SettingsLoader;
|
use settings::SettingsLoader;
|
||||||
use super::vim_plug;
|
use super::vim_plug;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
pub struct Store {
|
pub struct Store {
|
||||||
settings: Settings,
|
settings: Settings,
|
||||||
}
|
}
|
||||||
@ -20,15 +21,11 @@ impl Store {
|
|||||||
Store { settings: Settings::load() }
|
Store { settings: Settings::load() }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn empty() -> Self {
|
|
||||||
Store { settings: Settings::empty() }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn load_from_plug(vim_plug: &vim_plug::Manager) -> Self {
|
pub fn load_from_plug(vim_plug: &vim_plug::Manager) -> Self {
|
||||||
let settings = match vim_plug.get_plugs() {
|
let settings = match vim_plug.get_plugs() {
|
||||||
Err(msg) => {
|
Err(msg) => {
|
||||||
error!("{}", msg);
|
error!("{}", msg);
|
||||||
Settings::empty()
|
Default::default()
|
||||||
}
|
}
|
||||||
Ok(plugs) => {
|
Ok(plugs) => {
|
||||||
let plugs = plugs
|
let plugs = plugs
|
||||||
@ -106,15 +103,17 @@ impl Settings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SettingsLoader for Settings {
|
impl Default for Settings {
|
||||||
const SETTINGS_FILE: &'static str = "plugs.toml";
|
fn default() -> Self {
|
||||||
|
|
||||||
fn empty() -> Self {
|
|
||||||
Settings {
|
Settings {
|
||||||
plugs: vec![],
|
plugs: vec![],
|
||||||
enabled: false,
|
enabled: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SettingsLoader for Settings {
|
||||||
|
const SETTINGS_FILE: &'static str = "plugs.toml";
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, String> {
|
fn from_str(s: &str) -> Result<Self, String> {
|
||||||
toml::from_str(&s).map_err(|e| format!("{}", e))
|
toml::from_str(&s).map_err(|e| format!("{}", e))
|
||||||
|
@ -580,7 +580,7 @@ impl Entry {
|
|||||||
use settings::SettingsLoader;
|
use settings::SettingsLoader;
|
||||||
use toml;
|
use toml;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize, Default)]
|
||||||
struct ProjectSettings {
|
struct ProjectSettings {
|
||||||
projects: Vec<ProjectEntrySettings>,
|
projects: Vec<ProjectEntrySettings>,
|
||||||
}
|
}
|
||||||
@ -607,10 +607,6 @@ impl ProjectEntrySettings {
|
|||||||
impl SettingsLoader for ProjectSettings {
|
impl SettingsLoader for ProjectSettings {
|
||||||
const SETTINGS_FILE: &'static str = "projects.toml";
|
const SETTINGS_FILE: &'static str = "projects.toml";
|
||||||
|
|
||||||
fn empty() -> ProjectSettings {
|
|
||||||
ProjectSettings { projects: vec![] }
|
|
||||||
}
|
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, String> {
|
fn from_str(s: &str) -> Result<Self, String> {
|
||||||
toml::from_str(&s).map_err(|e| format!("{}", e))
|
toml::from_str(&s).map_err(|e| format!("{}", e))
|
||||||
}
|
}
|
||||||
|
@ -111,11 +111,9 @@ use serde;
|
|||||||
|
|
||||||
use dirs;
|
use dirs;
|
||||||
|
|
||||||
pub trait SettingsLoader: Sized + serde::Serialize {
|
pub trait SettingsLoader: Sized + serde::Serialize + Default {
|
||||||
const SETTINGS_FILE: &'static str;
|
const SETTINGS_FILE: &'static str;
|
||||||
|
|
||||||
fn empty() -> Self;
|
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, String>;
|
fn from_str(s: &str) -> Result<Self, String>;
|
||||||
|
|
||||||
fn load() -> Self {
|
fn load() -> Self {
|
||||||
@ -123,7 +121,7 @@ pub trait SettingsLoader: Sized + serde::Serialize {
|
|||||||
Ok(settings) => settings,
|
Ok(settings) => settings,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("{}", e);
|
error!("{}", e);
|
||||||
Self::empty()
|
Default::default()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -154,7 +152,7 @@ fn load_from_file<T: SettingsLoader>(path: &Path) -> Result<T, String> {
|
|||||||
)?;
|
)?;
|
||||||
T::from_str(&contents)
|
T::from_str(&contents)
|
||||||
} else {
|
} else {
|
||||||
Ok(T::empty())
|
Ok(Default::default())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,8 +445,8 @@ struct WindowState {
|
|||||||
sidebar_width: i32,
|
sidebar_width: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WindowState {
|
impl Default for WindowState {
|
||||||
pub fn new() -> Self {
|
fn default() -> Self {
|
||||||
WindowState {
|
WindowState {
|
||||||
current_width: DEFAULT_WIDTH,
|
current_width: DEFAULT_WIDTH,
|
||||||
current_height: DEFAULT_HEIGHT,
|
current_height: DEFAULT_HEIGHT,
|
||||||
@ -460,10 +460,6 @@ impl WindowState {
|
|||||||
impl SettingsLoader for WindowState {
|
impl SettingsLoader for WindowState {
|
||||||
const SETTINGS_FILE: &'static str = "window.toml";
|
const SETTINGS_FILE: &'static str = "window.toml";
|
||||||
|
|
||||||
fn empty() -> WindowState {
|
|
||||||
WindowState::new()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, String> {
|
fn from_str(s: &str) -> Result<Self, String> {
|
||||||
toml::from_str(&s).map_err(|e| format!("{}", e))
|
toml::from_str(&s).map_err(|e| format!("{}", e))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user