Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/operations/mod.rs @ 46136:dca9cb99971c
rust: replace most "operation" structs with functions
The hg-core crate has a partially-formed concept of "operation",
represented as structs with constructors and a `run` method.
Each struct?s contructor takes different parameters,
and each `run` has a different return type.
Constructors typically don?t do much more than store parameters
for `run` to access them.
There was a comment about adding an `Operation` trait
when the language supports expressing something so general,
but it?s hard to imagine how operations with such different APIs
could be used in a generic context.
This commit starts removing the concept of "operation",
since those are pretty much just functions.
Differential Revision: https://phab.mercurial-scm.org/D9595
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 14 Dec 2020 14:59:23 +0100 |
parents | 522ec3dc44b9 |
children | 3e2d539d0d1a |
line wrap: on
line diff
--- a/rust/hg-core/src/operations/mod.rs Mon Dec 14 13:47:44 2020 +0100 +++ b/rust/hg-core/src/operations/mod.rs Mon Dec 14 14:59:23 2020 +0100 @@ -7,22 +7,17 @@ mod dirstate_status; mod find_root; mod list_tracked_files; -pub use cat::{CatRev, CatRevError, CatRevErrorKind}; +pub use cat::{cat, CatRevError, CatRevErrorKind}; pub use debugdata::{ - DebugData, DebugDataError, DebugDataErrorKind, DebugDataKind, + debug_data, DebugDataError, DebugDataErrorKind, DebugDataKind, }; -pub use find_root::{FindRoot, FindRootError, FindRootErrorKind}; -pub use list_tracked_files::{ - ListDirstateTrackedFiles, ListDirstateTrackedFilesError, - ListDirstateTrackedFilesErrorKind, +pub use find_root::{ + find_root, find_root_from_path, FindRootError, FindRootErrorKind, }; pub use list_tracked_files::{ - ListRevTrackedFiles, ListRevTrackedFilesError, + list_rev_tracked_files, FilesForRev, 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. +pub use list_tracked_files::{ + Dirstate, ListDirstateTrackedFilesError, ListDirstateTrackedFilesErrorKind, +};