Skip to content

Commit 8f0c5a8

Browse files
committed
Remove redundant boxing at BMode::text_entries
1 parent ecd5950 commit 8f0c5a8

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ chrono = "0.4.19"
2323
serde = { version = "1.0.117", features = ["derive"] }
2424
toml = "0.5.7"
2525
structopt = "0.3.21"
26+
either = "1.6.1"
2627

2728
[profile.release]
2829
lto = true

src/mode.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use std::ffi::CString;
22

3+
use either::Either;
4+
35
use crate::DesktopEntry;
46

57
mod apps;
@@ -42,8 +44,12 @@ impl Mode {
4244
delegate!(pub fn eval(&mut self, idx: usize) -> std::convert::Infallible);
4345
delegate!(pub fn entries_len(&self) -> usize);
4446
delegate!(pub fn list_item(&self, idx: usize) -> crate::draw::ListItem<'_>);
45-
delegate!(
46-
pub fn text_entries(&self) -> Box<dyn Iterator<Item = &str> + '_>,
47-
wrap_with(Box::new)
48-
);
47+
48+
pub fn text_entries(&self) -> impl Iterator<Item = &str> + '_ {
49+
match self {
50+
Mode::AppsMode(mode) => Either::Left(mode.text_entries()),
51+
Mode::DialogMode(mode) => Either::Right(mode.text_entries()),
52+
}
53+
.into_iter()
54+
}
4955
}

0 commit comments

Comments
 (0)