# [−]Keyword const

The keyword for defining constants.

Sometimes a certain value is used many times throughout a program, and it can become inconvenient to copy it over and over. What's more, it's not always possible or desirable to make it a variable that gets carried around to each function that needs it. In these cases, the `const` keyword provides a convenient alternative to code duplication.

    const THING: u32 = 0xABAD1DEA;

    let foo = 123 + THING;Run

Constants must be explicitly typed, unlike with `let` you can't ignore its type and let the compiler figure it out. Any constant value can be defined in a const, which in practice happens to be most things that would be reasonable to have a constant (barring `const fn`s). For example, you can't have a File as a `const`.

The only lifetime allowed in a constant is `'static`, which is the lifetime that encompasses all others in a Rust program. For example, if you wanted to define a constant string, it would look like this:

    const WORDS: &str = "hello rust!";Run

Thanks to static lifetime elision, you usually don't have to explicitly use 'static:

    const WORDS: &str = "hello convenience!";Run

`const` items looks remarkably similar to `static` items, which introduces some confusion as to which one should be used at which times. To put it simply, constants are inlined wherever they're used, making using them identical to simply replacing the name of the const with its value. Static variables on the other hand point to a single location in memory, which all accesses share. This means that, unlike with constants, they can't have destructors, and act as a single value across the entire codebase.

Constants, as with statics, should always be in SCREAMING_SNAKE_CASE.

The `const` keyword is also used in raw pointers in combination with `mut`, as seen in `*const T` and `*mut T`. More about that can be read at the pointer primitive part of the Rust docs.

For more detail on `const`, see the Rust Book or the Reference

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)