macro_rules! paste { ($($tt:tt)*) => { ... }; }
meta only.Expand description
Allows to paste identifiers together.
Reexported from the paste crate.
Within the paste! macro, identifiers inside [<…>] are pasted
together to form a single identifier.
Examples
paste! {
// Defines a const called `QRST`.
const [<Q R S T>]: &str = "success!";
}
fn main() {
assert_eq!(
paste! { [<Q R S T>].len() },
8,
);
}Case conversion
Use $var:lower or $var:upper in the segment list to convert an
interpolated segment to lower- or uppercase as part of the paste. For
example, [<ld_ $reg:lower _expr>] would paste to ld_bc_expr if invoked
with $reg=Bc.
Use $var:snake to convert CamelCase input to snake_case.
Use $var:camel to convert snake_case to CamelCase. These compose,
so for example $var:snake:upper would give you SCREAMING_CASE.
The precise Unicode conversions are as defined by str::to_lowercase
and str::to_uppercase.
Pasting documentation strings
Within the paste! macro, arguments to a #[doc ...] attribute are
implicitly concatenated together to form a coherent documentation string.
macro_rules! method_new {
($ret:ident) => {
paste! {
#[doc = "Create a new `" $ret "` object."]
pub fn new() -> $ret { todo!() }
}
};
}
pub struct Paste {}
method_new!(Paste); // expands to #[doc = "Create a new `Paste` object"]