Improve performance using iters

This commit is contained in:
13r0ck 2021-05-10 16:05:50 -06:00
parent 77e6e111e0
commit 8f319d7c6f

View file

@ -265,19 +265,11 @@ where
};
if y.is_sign_negative() {
let mut options_iter = self.options.iter();
if let Some(selected) = self.selected.as_ref() {
let i = self
.options
.iter()
.position(|option| option == selected)
.unwrap_or(0)
+ 1;
if i < self.options.len() {
messages.push((self.on_selected)(
self.options[i].clone(),
));
if let Some(msg) = self.on_change.take() {
messages.push(msg)
if let Some(_) = options_iter.position(|o| o == selected) {
if let Some(prev_val) = options_iter.next() {
messages.push((self.on_selected)(prev_val.clone()));
}
}
} else {
@ -288,18 +280,11 @@ where
}
}
} else {
let mut options_iter = self.options.iter().rev();
if let Some(selected) = self.selected.as_ref() {
let i = self
.options
.iter()
.position(|option| option == selected)
.unwrap_or(0);
if i != 0 {
messages.push((self.on_selected)(
self.options[i - 1].clone(),
));
if let Some(msg) = self.on_change.take() {
messages.push(msg)
if let Some(_) = options_iter.position(|o| o == selected) {
if let Some(next_val) = options_iter.next() {
messages.push((self.on_selected)(next_val.clone()));
}
}
} else {