Mercurial > public > mercurial-scm > hg
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 } |