diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-11-12 23:39:58 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-11-12 23:39:58 +0800 |
| commit | 54f074182d639acd834617ba621f10343b73875b (patch) | |
| tree | c6e2d5d891c3729e7430cd87115ddc6975ad5e61 | |
| parent | 6e4d5e070d52f9d1af90cc6ad8a280bd91b6220d (diff) | |
refactor: unified `for` for `set_volume` for code elegance
| -rw-r--r-- | src/main.rs | 28 |
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 |
