At the end of Rust Book chapter 5.27 const and static is the following extract:
A const can be thought of as a #define in C: it has metadata overhead but it has no runtime overhead. “Should I use a #define or a static in C,” is largely the same question as whether you should use a const or a static in Rust.
Unfortunately, this is rather misleading. An experienced C programmer will try and avoid #define as much as possible (they do have their use) because:
- a
#define is unscoped, and the C preprocessor is just a text preprocessor
- a
#define is untyped
You can check constants - "static const" vs "define" in C for more context and relevant advices; specifically Jonathan Leffer's answer (yep, just skip mine). Note: in C++, the answer is static const because C++ lifts a lot of restrictions for where one can use static const variables.
Since in Rust const is scoped and typed, it is really no equivalent to #define. It is, however, much closer to enum.
Maybe simply comparing to enum instead of #define would avoid confusing the reader?
At the end of Rust Book chapter 5.27
constandstaticis the following extract:Unfortunately, this is rather misleading. An experienced C programmer will try and avoid
#defineas much as possible (they do have their use) because:#defineis unscoped, and the C preprocessor is just a text preprocessor#defineis untypedYou can check constants - "static const" vs "define" in C for more context and relevant advices; specifically Jonathan Leffer's answer (yep, just skip mine). Note: in C++, the answer is
static constbecause C++ lifts a lot of restrictions for where one can usestatic constvariables.Since in Rust
constis scoped and typed, it is really no equivalent to#define. It is, however, much closer toenum.Maybe simply comparing to
enuminstead of#definewould avoid confusing the reader?