Builtin placeholders

cargo-generate supports a number of builtin placeholders for use in templates.

These placeholders can be used directly in files using the Liquid language, or from Rhai scripts using the syntax:

variable::get("placeholder name")

Builtin placeholders are:

  • authors
    • this will be filled in by a function borrowed from Cargo's source code, that determines your information from Cargo's configuration. It will either be on the form username <email> or just plain username.
  • project-name
    • this is supplied by either passing the --name flag to the command or working with the interactive CLI to supply a name. It can be provided in snake_case or dash-case, in all other cases it is converted to dash-case.
    • it can also be supplied via the environment variable CARGO_GENERATE_VALUE_PROJECT_NAME when running in --silent mode

      ⚠️ Note: the --force flag allows you to use the project name as it is given, without adjusting. Please use it carefully.

  • crate_name
    • the snake_case_version of project-name
  • crate_type
    • this is supplied by either passing the --bin or --lib flag to the command line, contains either bin or lib, --bin is the default
  • os-arch
    • contains the current operating system and architecture ex: linux-x86_64
  • username
    • this will be filled in by a function borrowed from Cargo's source code, that determines your information from Cargo's configuration.
  • within_cargo_project
    • A boolean with the value true if the template is being expanded inside a Cargo project. It's a simple matter of whether Cargo.toml is present in any parent folder.
  • is_init
    • A boolean that reflects the value of the --init parameter of cargo-generate.

Usage example

// README.md

This awesome crate `{{ crate_name }}` is brought to you by {{ authors }}.