[−][src]Crate const_format
Macros for concatenating and formatting constants into &'static str constants.
Examples
Concatenation
use const_format::concatcp; const NAME: &str = "Bob"; const FOO: &str = concatcp!(NAME, ", age ", 21u8,"!"); assert_eq!(FOO, "Bob, age 21!");
Limitations
All of the macros from const_format have these limitations:
-
They cannot concatenate constants that use generic parameters, so while
Type::<u8>::FOOis fineType::<T>::FOOis not (Tbeing a type parameter). -
Integer arguments must have a type inferrable from context, more details below.
-
They cannot be used places that take string literals. So
#[doc = "foobar"]cannot be replaced with#[doc = concatcp!("foo", "bar") ].
Integer arguments
Integer arguments must have a type inferrable from context. so if you only pass an integer literal it must have a suffix.
Example of what does compile:
const N: u32 = 1; assert_eq!(const_format::concatcp!(N + 1, 2 + N), "23"); assert_eq!(const_format::concatcp!(2u32, 2 + 1u8, 3u8 + 1), "234");
Example of what does not compile:
assert_eq!(const_format::concatcp!(1 + 1, 2 + 1), "23");
Cargo features
None yet.
No-std support
const_format is unconditionally #![no_std], so it can be used anywhere Rust can be used.
Minimum Supported Rust Version
const_format requires Rust 1.46.0, because it uses looping an branching in const contexts.
Features that require versions of Rust, or the nightly compiler, need to be explicitly enabled with cargo features.
Macros
| concatcp | Concatenates constants of primitive types into a |