| use std::cmp::Ordering; | 
 |  | 
 | use crate::State; | 
 |  | 
 | /// | 
 | #[allow(clippy::empty_docs)] | 
 | pub mod entries { | 
 |     use bstr::BString; | 
 |  | 
 |     /// The error returned by [`State::verify_entries()`][crate::State::verify_entries()]. | 
 |     #[derive(Debug, thiserror::Error)] | 
 |     #[allow(missing_docs)] | 
 |     pub enum Error { | 
 |         #[error("Entry '{current_path}' (stage = {current_stage}) at index {current_index} should order after prior entry '{previous_path}' (stage = {previous_stage})")] | 
 |         OutOfOrder { | 
 |             current_index: usize, | 
 |             current_path: BString, | 
 |             current_stage: u8, | 
 |             previous_path: BString, | 
 |             previous_stage: u8, | 
 |         }, | 
 |     } | 
 | } | 
 |  | 
 | /// | 
 | #[allow(clippy::empty_docs)] | 
 | pub mod extensions { | 
 |     use crate::extension; | 
 |  | 
 |     /// The error returned by [`State::verify_extensions()`][crate::State::verify_extensions()]. | 
 |     #[derive(Debug, thiserror::Error)] | 
 |     #[allow(missing_docs)] | 
 |     pub enum Error { | 
 |         #[error(transparent)] | 
 |         Tree(#[from] extension::tree::verify::Error), | 
 |     } | 
 | } | 
 |  | 
 | impl State { | 
 |     /// Assure our entries are consistent. | 
 |     pub fn verify_entries(&self) -> Result<(), entries::Error> { | 
 |         let _span = gix_features::trace::coarse!("gix_index::File::verify_entries()"); | 
 |         let mut previous = None::<&crate::Entry>; | 
 |         for (idx, entry) in self.entries.iter().enumerate() { | 
 |             if let Some(prev) = previous { | 
 |                 if prev.cmp(entry, self) != Ordering::Less { | 
 |                     return Err(entries::Error::OutOfOrder { | 
 |                         current_index: idx, | 
 |                         current_path: entry.path(self).into(), | 
 |                         current_stage: entry.flags.stage() as u8, | 
 |                         previous_path: prev.path(self).into(), | 
 |                         previous_stage: prev.flags.stage() as u8, | 
 |                     }); | 
 |                 } | 
 |             } | 
 |             previous = Some(entry); | 
 |         } | 
 |         Ok(()) | 
 |     } | 
 |  | 
 |     /// Note: `objects` cannot be `Option<F>` as we can't call it with a closure then due to the indirection through `Some`. | 
 |     pub fn verify_extensions(&self, use_find: bool, objects: impl gix_object::Find) -> Result<(), extensions::Error> { | 
 |         self.tree().map(|t| t.verify(use_find, objects)).transpose()?; | 
 |         // TODO: verify links by running the whole set of tests on the index | 
 |         //       - do that once we load it as well, or maybe that's lazy loaded? Too many questions for now. | 
 |         Ok(()) | 
 |     } | 
 | } |