comparison rust/hg-core/src/operations/mod.rs @ 45358: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
comparison
equal deleted inserted replaced
45357:27424779c5b8 45358:452ece5654c5
1 //! A distinction is made between operations and commands.
2 //! An operation is what can be done whereas a command is what is exposed by
3 //! the cli. A single command can use several operations to achieve its goal.
4
1 mod dirstate_status; 5 mod dirstate_status;
2 mod find_root; 6 mod find_root;
3 pub use find_root::{FindRoot, FindRootError, FindRootErrorKind}; 7 pub use find_root::{FindRoot, FindRootError, FindRootErrorKind};
4 8
5 /// An interface for high-level hg operations. 9 // TODO add an `Operation` trait when GAT have landed (rust #44265):
6 /// 10 // there is no way to currently define a trait which can both return
7 /// A distinction is made between operation and commands. 11 // references to `self` and to passed data, which is what we would need.
8 /// An operation is what can be done whereas a command is what is exposed by 12 // Generic Associated Types may fix this and allow us to have a unified
9 /// the cli. A single command can use several operations to achieve its goal. 13 // interface.
10 pub trait Operation<T> {
11 type Error;
12 fn run(&self) -> Result<T, Self::Error>;
13 }