Skip to content

Commit

Permalink
perf: Remove some monomorphization bloat
Browse files Browse the repository at this point in the history
When checking into binary size, I noticed that the `git` example is a
lot larger than v3.  `git bisect` narrowed it down to
11076a5 which doesn't make sense.  I
did noticed we could remove some bloat from monomorphization.

Overall for `cargo-example, we've dropped about 47 KiB.
  • Loading branch information
epage committed Jul 23, 2022
1 parent 08e8642 commit 8e38caa
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions src/builder/command.rs
Expand Up @@ -171,8 +171,12 @@ impl<'help> Command<'help> {
/// ```
/// [argument]: Arg
#[must_use]
pub fn arg<A: Into<Arg<'help>>>(mut self, a: A) -> Self {
let mut arg = a.into();
pub fn arg<A: Into<Arg<'help>>>(self, a: A) -> Self {
let arg = a.into();
self.arg_internal(arg)
}

fn arg_internal(mut self, mut arg: Arg<'help>) -> Self {
if let Some(current_disp_ord) = self.current_disp_ord.as_mut() {
if !arg.is_positional() && arg.provider != ArgProvider::Generated {
let current = *current_disp_ord;
Expand Down Expand Up @@ -401,8 +405,12 @@ impl<'help> Command<'help> {
/// ```
#[inline]
#[must_use]
pub fn subcommand<S: Into<Self>>(mut self, subcmd: S) -> Self {
let mut subcmd = subcmd.into();
pub fn subcommand<S: Into<Self>>(self, subcmd: S) -> Self {
let subcmd = subcmd.into();
self.subcommand_internal(subcmd)
}

fn subcommand_internal(mut self, mut subcmd: Self) -> Self {
if let Some(current_disp_ord) = self.current_disp_ord.as_mut() {
let current = *current_disp_ord;
subcmd.disp_ord.get_or_insert(current);
Expand Down

0 comments on commit 8e38caa

Please sign in to comment.