comparison rust/rhg/src/commands/files.rs @ 49983:795b5b01cbd2

rhg-files: make signature of `display_files` more flexible This allows the callers to use any error type that converts to `CommandError` instead of a particular concrete type.
author Rapha?l Gom?s <rgomes@octobus.net>
date Wed, 11 Jan 2023 17:28:48 +0100
parents 95ffa065204e
children df9eabc9837b
comparison
equal deleted inserted replaced
49982:7faedeb24eb2 49983:795b5b01cbd2
1 use crate::error::CommandError; 1 use crate::error::CommandError;
2 use crate::ui::Ui; 2 use crate::ui::Ui;
3 use crate::utils::path_utils::RelativizePaths; 3 use crate::utils::path_utils::RelativizePaths;
4 use clap::Arg; 4 use clap::Arg;
5 use hg::errors::HgError;
6 use hg::operations::list_rev_tracked_files; 5 use hg::operations::list_rev_tracked_files;
7 use hg::repo::Repo; 6 use hg::repo::Repo;
8 use hg::utils::filter_map_results; 7 use hg::utils::filter_map_results;
9 use hg::utils::hg_path::HgPath; 8 use hg::utils::hg_path::HgPath;
10 use rayon::prelude::*; 9 use rayon::prelude::*;
83 82
84 display_files(invocation.ui, repo, files.into_iter().map(Ok)) 83 display_files(invocation.ui, repo, files.into_iter().map(Ok))
85 } 84 }
86 } 85 }
87 86
88 fn display_files<'a>( 87 fn display_files<'a, E>(
89 ui: &Ui, 88 ui: &Ui,
90 repo: &Repo, 89 repo: &Repo,
91 files: impl IntoIterator<Item = Result<&'a HgPath, HgError>>, 90 files: impl IntoIterator<Item = Result<&'a HgPath, E>>,
92 ) -> Result<(), CommandError> { 91 ) -> Result<(), CommandError>
92 where
93 CommandError: From<E>,
94 {
93 let mut stdout = ui.stdout_buffer(); 95 let mut stdout = ui.stdout_buffer();
94 let mut any = false; 96 let mut any = false;
95 97
96 let relativize = RelativizePaths::new(repo)?; 98 let relativize = RelativizePaths::new(repo)?;
97 for result in files { 99 for result in files {