rust/hg-core/src/dirstate/dirs_multiset.rs
changeset 47124 cd8ca38fccff
parent 47093 787ff5d21bcd
child 47332 4ee9f419c52e
equal deleted inserted replaced
47123:d8ac62374943 47124:cd8ca38fccff
    28 
    28 
    29 impl DirsMultiset {
    29 impl DirsMultiset {
    30     /// Initializes the multiset from a dirstate.
    30     /// Initializes the multiset from a dirstate.
    31     ///
    31     ///
    32     /// If `skip_state` is provided, skips dirstate entries with equal state.
    32     /// If `skip_state` is provided, skips dirstate entries with equal state.
    33     pub fn from_dirstate<'a>(
    33     pub fn from_dirstate<'a, I, P>(
    34         dirstate: impl IntoIterator<Item = (&'a HgPathBuf, &'a DirstateEntry)>,
    34         dirstate: I,
    35         skip_state: Option<EntryState>,
    35         skip_state: Option<EntryState>,
    36     ) -> Result<Self, DirstateMapError> {
    36     ) -> Result<Self, DirstateMapError>
       
    37     where
       
    38         I: IntoIterator<Item = (P, &'a DirstateEntry)>,
       
    39         P: AsRef<HgPath>,
       
    40     {
    37         let mut multiset = DirsMultiset {
    41         let mut multiset = DirsMultiset {
    38             inner: FastHashMap::default(),
    42             inner: FastHashMap::default(),
    39         };
    43         };
    40         for (filename, DirstateEntry { state, .. }) in dirstate {
    44         for (filename, entry) in dirstate {
       
    45             let filename = filename.as_ref();
    41             // This `if` is optimized out of the loop
    46             // This `if` is optimized out of the loop
    42             if let Some(skip) = skip_state {
    47             if let Some(skip) = skip_state {
    43                 if skip != *state {
    48                 if skip != entry.state {
    44                     multiset.add_path(filename)?;
    49                     multiset.add_path(filename)?;
    45                 }
    50                 }
    46             } else {
    51             } else {
    47                 multiset.add_path(filename)?;
    52                 multiset.add_path(filename)?;
    48             }
    53             }