Improve performance using iters
This commit is contained in:
parent
77e6e111e0
commit
8f319d7c6f
1 changed files with 8 additions and 23 deletions
|
|
@ -265,19 +265,11 @@ where
|
||||||
};
|
};
|
||||||
|
|
||||||
if y.is_sign_negative() {
|
if y.is_sign_negative() {
|
||||||
|
let mut options_iter = self.options.iter();
|
||||||
if let Some(selected) = self.selected.as_ref() {
|
if let Some(selected) = self.selected.as_ref() {
|
||||||
let i = self
|
if let Some(_) = options_iter.position(|o| o == selected) {
|
||||||
.options
|
if let Some(prev_val) = options_iter.next() {
|
||||||
.iter()
|
messages.push((self.on_selected)(prev_val.clone()));
|
||||||
.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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -288,18 +280,11 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
let mut options_iter = self.options.iter().rev();
|
||||||
if let Some(selected) = self.selected.as_ref() {
|
if let Some(selected) = self.selected.as_ref() {
|
||||||
let i = self
|
if let Some(_) = options_iter.position(|o| o == selected) {
|
||||||
.options
|
if let Some(next_val) = options_iter.next() {
|
||||||
.iter()
|
messages.push((self.on_selected)(next_val.clone()));
|
||||||
.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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue