From 7bc007524fb784b7bdcfddfbad6779bb0d6b5096 Mon Sep 17 00:00:00 2001 From: Emerson Ford Date: Mon, 11 Jul 2022 18:48:40 -0700 Subject: [PATCH] fix: loosen lifetime constraint on mut_subcommand --- src/builder/command.rs | 4 ++-- tests/builder/tests.rs | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/builder/command.rs b/src/builder/command.rs index d644cb7681fa..9ef4947c6f97 100644 --- a/src/builder/command.rs +++ b/src/builder/command.rs @@ -298,10 +298,10 @@ impl<'help> App<'help> { /// assert!(res.is_ok()); /// ``` #[must_use] - pub fn mut_subcommand(mut self, subcmd_id: T, f: F) -> Self + pub fn mut_subcommand<'a, T, F>(mut self, subcmd_id: T, f: F) -> Self where F: FnOnce(App<'help>) -> App<'help>, - T: Into<&'help str>, + T: Into<&'a str>, { let subcmd_id: &str = subcmd_id.into(); let id = Id::from(subcmd_id); diff --git a/tests/builder/tests.rs b/tests/builder/tests.rs index 196884e0e075..8a1544c18047 100644 --- a/tests/builder/tests.rs +++ b/tests/builder/tests.rs @@ -445,6 +445,25 @@ fn mut_subcommand_all() { ); } +#[test] +fn mut_subcommand_with_alias_resolve() { + let mut cmd = + Command::new("foo").subcommand(Command::new("bar").alias("baz").about("test subcmd")); + assert_eq!( + cmd.find_subcommand("baz").unwrap().get_about().unwrap(), + "test subcmd" + ); + + let true_name = cmd.find_subcommand("baz").unwrap().get_name().to_string(); + assert_eq!(true_name, "bar"); + + cmd = cmd.mut_subcommand(&*true_name, |subcmd| subcmd.about("modified about")); + assert_eq!( + cmd.find_subcommand("baz").unwrap().get_about().unwrap(), + "modified about" + ); +} + #[test] fn issue_3669_command_build_recurses() { let mut cmd = Command::new("ctest").subcommand(