diff --git a/src/models/application/modes/theme.rs b/src/models/application/modes/theme.rs index c184ef57..a01d7b8c 100644 --- a/src/models/application/modes/theme.rs +++ b/src/models/application/modes/theme.rs @@ -4,6 +4,7 @@ use fragment; use std::fmt; use std::slice::Iter; +#[derive(Default)] pub struct ThemeMode { insert: bool, input: String, @@ -15,17 +16,19 @@ pub struct ThemeMode { impl ThemeMode { pub fn new(config: SearchSelectConfig) -> ThemeMode { ThemeMode { - insert: true, - input: String::new(), - themes: Vec::new(), - results: SelectableVec::new(Vec::new()), config, + insert: true, + ..Default::default() } } pub fn reset(&mut self, themes: Vec, config: SearchSelectConfig) { - self.themes = themes; - self.config = config; + *self = ThemeMode { + config, + insert: true, + themes, + ..Default::default() + }; } } diff --git a/src/util/selectable_vec.rs b/src/util/selectable_vec.rs index 0f0855f2..9e8d93d1 100644 --- a/src/util/selectable_vec.rs +++ b/src/util/selectable_vec.rs @@ -3,6 +3,7 @@ use std::ops::Deref; /// A simple decorator around a Vec that allows a single element to be selected. /// The selection can be incremented/decremented in single steps, and the /// selected value wraps when moved beyond either edge of the set. +#[derive(Default)] pub struct SelectableVec { set: Vec, selected_index: usize,