Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/operations/mod.rs @ 45378:452ece5654c5
hg-core: remove the `Operation` trait
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.
See: rust #44265
Differential Revision: https://phab.mercurial-scm.org/D8862
author | Antoine Cezar <antoine.cezar@octobus.net> |
---|---|
date | Wed, 29 Jul 2020 10:08:09 +0200 |
parents | 98817e5daca7 |
children | 0f5286ccf82c |
line wrap: on
line diff
--- a/rust/hg-core/src/operations/mod.rs Tue Aug 04 10:59:43 2020 +0200 +++ b/rust/hg-core/src/operations/mod.rs Wed Jul 29 10:08:09 2020 +0200 @@ -1,13 +1,13 @@ +//! 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 dirstate_status; mod find_root; pub use find_root::{FindRoot, FindRootError, FindRootErrorKind}; -/// An interface for high-level hg operations. -/// -/// A distinction is made between operation 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. -pub trait Operation<T> { - type Error; - fn run(&self) -> Result<T, Self::Error>; -} +// 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.