Mercurial > public > mercurial-scm > hg
view rust/rhg/src/commands/root.rs @ 46135: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 | fada33872b5b |
children | 8a4914397d02 |
line wrap: on
line source
use crate::commands::Command; use crate::error::CommandError; use crate::ui::Ui; use format_bytes::format_bytes; use hg::operations::find_root; use hg::utils::files::get_bytes_from_path; pub const HELP_TEXT: &str = " Print the root directory of the current repository. Returns 0 on success. "; pub struct RootCommand {} impl RootCommand { pub fn new() -> Self { RootCommand {} } } impl Command for RootCommand { fn run(&self, ui: &Ui) -> Result<(), CommandError> { let path_buf = find_root()?; let bytes = get_bytes_from_path(path_buf); ui.write_stdout(&format_bytes!(b"{}\n", bytes.as_slice()))?; Ok(()) } }