view rust/hg-core/src/operations/mod.rs @ 46127:c58c8f1d63b1

copies-rust: hide most of the comparison details inside a closure The function that compares values needs various supporting elements that are the same for each call. We are about to both make change to these element and change to call sites in our upcoming work. So abstracting most of the details will help to avoid conflict while these works happen in parallel. Differential Revision: https://phab.mercurial-scm.org/D9426
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 21 Nov 2020 10:50:14 +0100
parents 522ec3dc44b9
children dca9cb99971c
line wrap: on
line source

//! A distinction is made between operations and commands.
//! An operation is what can be done whereas a command is what is exposed by
//! the cli. A single command can use several operations to achieve its goal.

mod cat;
mod debugdata;
mod dirstate_status;
mod find_root;
mod list_tracked_files;
pub use cat::{CatRev, CatRevError, CatRevErrorKind};
pub use debugdata::{
    DebugData, DebugDataError, DebugDataErrorKind, DebugDataKind,
};
pub use find_root::{FindRoot, FindRootError, FindRootErrorKind};
pub use list_tracked_files::{
    ListDirstateTrackedFiles, ListDirstateTrackedFilesError,
    ListDirstateTrackedFilesErrorKind,
};
pub use list_tracked_files::{
    ListRevTrackedFiles, ListRevTrackedFilesError,
    ListRevTrackedFilesErrorKind,
};

// TODO add an `Operation` trait when GAT have landed (rust #44265):
// there is no way to currently define a trait which can both return
// references to `self` and to passed data, which is what we would need.
// Generic Associated Types may fix this and allow us to have a unified
// interface.