summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/main.rs b/src/main.rs
index 306f909..b1a69ab 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -81,23 +81,19 @@ fn set_volume(player: &Player, volume: u8) -> Vec<Result<(), DBusError>> {
/ current_volume
.abs_diff(volume)
.into();
- if current_volume > volume {
- for v in (volume..=current_volume).rev() {
- let t = Instant::now();
- res.push(player.set_volume(denormal_volume(v)));
- intervel = intervel.saturating_sub(t.elapsed());
- if !intervel.is_zero() {
- sleep(intervel);
- }
- }
+
+ let range: Box<dyn Iterator<Item = u8>> = if current_volume > volume {
+ Box::new((volume..=current_volume).rev())
} else {
- for v in current_volume..=volume {
- let t = Instant::now();
- res.push(player.set_volume(denormal_volume(v)));
- intervel = intervel.saturating_sub(t.elapsed());
- if !intervel.is_zero() {
- sleep(intervel);
- }
+ Box::new(current_volume..volume)
+ };
+
+ for v in range {
+ let t = Instant::now();
+ res.push(player.set_volume(denormal_volume(v)));
+ intervel = intervel.saturating_sub(t.elapsed());
+ if !intervel.is_zero() {
+ sleep(intervel);
}
}
res