diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 7e59bbdd..84769594 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -2404,7 +2404,7 @@ fn global_search(cx: &mut Context) {
     let picker = Picker::new(
         columns,
         1, // contents
-        vec![],
+        [],
         config,
         move |cx, FileResult { path, line_num, .. }, action| {
             let doc = match cx.editor.open(path, action) {
@@ -2991,16 +2991,12 @@ fn jumplist_picker(cx: &mut Context) {
     let picker = Picker::new(
         columns,
         1, // path
-        cx.editor
-            .tree
-            .views()
-            .flat_map(|(view, _)| {
-                view.jumps
-                    .iter()
-                    .rev()
-                    .map(|(doc_id, selection)| new_meta(view, *doc_id, selection.clone()))
-            })
-            .collect(),
+        cx.editor.tree.views().flat_map(|(view, _)| {
+            view.jumps
+                .iter()
+                .rev()
+                .map(|(doc_id, selection)| new_meta(view, *doc_id, selection.clone()))
+        }),
         (),
         |cx, meta, action| {
             cx.editor.switch(meta.id, action);
@@ -3077,7 +3073,7 @@ fn changed_file_picker(cx: &mut Context) {
     let picker = Picker::new(
         columns,
         1, // path
-        Vec::new(),
+        [],
         FileChangeData {
             cwd: cwd.clone(),
             style_untracked: added,
@@ -3124,14 +3120,15 @@ pub fn command_palette(cx: &mut Context) {
                 [&cx.editor.mode]
                 .reverse_map();
 
-            let mut commands: Vec<MappableCommand> = MappableCommand::STATIC_COMMAND_LIST.into();
-            commands.extend(typed::TYPABLE_COMMAND_LIST.iter().map(|cmd| {
-                MappableCommand::Typable {
-                    name: cmd.name.to_owned(),
-                    doc: cmd.doc.to_owned(),
-                    args: Vec::new(),
-                }
-            }));
+            let commands = MappableCommand::STATIC_COMMAND_LIST.iter().cloned().chain(
+                typed::TYPABLE_COMMAND_LIST
+                    .iter()
+                    .map(|cmd| MappableCommand::Typable {
+                        name: cmd.name.to_owned(),
+                        args: Vec::new(),
+                        doc: cmd.doc.to_owned(),
+                    }),
+            );
 
             let columns = vec![
                 ui::PickerColumn::new("name", |item, _| match item {
diff --git a/helix-term/src/commands/lsp.rs b/helix-term/src/commands/lsp.rs
index 059fb814..601c58eb 100644
--- a/helix-term/src/commands/lsp.rs
+++ b/helix-term/src/commands/lsp.rs
@@ -501,7 +501,7 @@ pub fn workspace_symbol_picker(cx: &mut Context) {
     let picker = Picker::new(
         columns,
         1, // name column
-        vec![],
+        [],
         (),
         move |cx, item, action| {
             jump_to_location(
diff --git a/helix-term/src/ui/mod.rs b/helix-term/src/ui/mod.rs
index 14d92b57..e1ecf0a6 100644
--- a/helix-term/src/ui/mod.rs
+++ b/helix-term/src/ui/mod.rs
@@ -228,22 +228,16 @@ pub fn file_picker(root: PathBuf, config: &helix_view::editor::Config) -> FilePi
                 .into()
         },
     )];
-    let picker = Picker::new(
-        columns,
-        0,
-        Vec::new(),
-        root,
-        move |cx, path: &PathBuf, action| {
-            if let Err(e) = cx.editor.open(path, action) {
-                let err = if let Some(err) = e.source() {
-                    format!("{}", err)
-                } else {
-                    format!("unable to open \"{}\"", path.display())
-                };
-                cx.editor.set_error(err);
-            }
-        },
-    )
+    let picker = Picker::new(columns, 0, [], root, move |cx, path: &PathBuf, action| {
+        if let Err(e) = cx.editor.open(path, action) {
+            let err = if let Some(err) = e.source() {
+                format!("{}", err)
+            } else {
+                format!("unable to open \"{}\"", path.display())
+            };
+            cx.editor.set_error(err);
+        }
+    })
     .with_preview(|_editor, path| Some((path.as_path().into(), None)));
     let injector = picker.injector();
     let timeout = std::time::Instant::now() + std::time::Duration::from_millis(30);
diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs
index 4f509530..ebc06cc0 100644
--- a/helix-term/src/ui/picker.rs
+++ b/helix-term/src/ui/picker.rs
@@ -298,7 +298,7 @@ impl<T: 'static + Send + Sync, D: 'static + Send + Sync> Picker<T, D> {
     pub fn new(
         columns: Vec<Column<T, D>>,
         primary_column: usize,
-        options: Vec<T>,
+        options: impl IntoIterator<Item = T>,
         editor_data: D,
         callback_fn: impl Fn(&mut Context, &T, Action) + 'static,
     ) -> Self {