Generate completion scripts for many different shells.

Example on how to generate and install the completion script for zsh:

   $ mkdir ~/.zfunc
   $ rustup completions zsh cargo > ~/.zfunc/_cargo
   $ cargo public-api completions zsh > ~/.zfunc/_cargo-public-api
   $ fpath+=~/.zfunc
   $ autoload -U compinit && compinit
   $ cargo public-api --{{Tab}}
   --all-features         -- Activate all available features
   --cap-lints            -- Forwarded to rustdoc JSON build command
   --color                -- When to color the output
   --debug-sorting        -- Show the hidden "sorting prefix" that makes items nicely grouped
   [...]

Usage: cargo public-api completions [OPTIONS] <SHELL>

Arguments:
  <SHELL>
          [possible values: bash, elvish, fig, fish, nushell, powershell, zsh]

Options:
      --manifest-path <PATH>
          Path to `Cargo.toml`
          
          [default: Cargo.toml]

  -p, --package <PACKAGE>
          Name of package in workspace to list or diff the public API for

      --omit <OMIT>
          Omit noisy items

          Possible values:
          - blanket-impls:      Omit items that belong to Blanket Implementations such as `impl<T>
            Any for T`, `impl<T> Borrow<T> for T`, and `impl<T, U> Into<U> for T where U: From<T>`
          - auto-trait-impls:   Omit items that belong to Auto Trait Implementations such as `impl
            Send for ...`, `impl Sync for ...`, and `impl Unpin for ...`
          - auto-derived-impls: Omit items that belong to Auto Derived Implementations such as
            `Clone`, `Debug`, and `Eq`

  -s, --simplified...
          Shorthand for omitting noisy items. Can be used more than once.
          
          | Usage | Corresponds to                                           |
          |-------|----------------------------------------------------------|
          | -s    | --omit blanket-impls                                     |
          | -ss   | --omit blanket-impls,auto-trait-impls                    |
          | -sss  | --omit blanket-impls,auto-trait-impls,auto-derived-impls |

      --include <INCLUDE>
          Include extra details

          Possible values:
          - function-parameter-names: Include function parameter names in the output. They are
            omitted by default to avoid spurious API diffs when parameter names change. But they can
            sometimes be helpful to include in the output

  -v, --verbose...
          Shorthand for including extra details.
          
          | Usage | Corresponds to                                           |
          |-------|----------------------------------------------------------|
          | -v    | --include function-parameter-names                       |

  -F, --features <FEATURES>
          Space or comma separated list of features to activate

      --all-features
          Activate all available features

      --no-default-features
          Do not activate the `default` feature

      --target <TARGET>
          Build for the target triple

      --color [<COLOR>]
          When to color the output.
          
          By default, `--color=auto` is active. Using just `--color` without an arg is equivalent to
          `--color=always`.

          Possible values:
          - auto:   Colors will be used if stdout is a terminal. Colors will not be used if stdout
            is a regular file
          - never:  Colors will never be used
          - always: Colors will always be used

  -h, --help
          Print help (see a summary with '-h')
