rust: macros: add `concat_idents!` proc macro
authorBjörn Roy Baron <bjorn3_gh@protonmail.com>
Thu, 10 Nov 2022 16:41:17 +0000 (17:41 +0100)
committerMiguel Ojeda <ojeda@kernel.org>
Sun, 4 Dec 2022 00:59:04 +0000 (01:59 +0100)
commit60f18c225f5f6939e348c4b067711d10afd33151
tree7f60e3ef1510b5f5645a19f6197655921d8b4127
parentc3630df66f95e6c18987734b39f0239303dd72d8
rust: macros: add `concat_idents!` proc macro

This macro provides similar functionality to the unstable feature
`concat_idents` without having to rely on it.

For instance:

    let x_1 = 42;
    let x_2 = concat_idents!(x, _1);
    assert!(x_1 == x_2);

It has different behavior with respect to macro hygiene. Unlike
the unstable `concat_idents!` macro, it allows, for example,
referring to local variables by taking the span of the second
macro as span for the output identifier.

Signed-off-by: Björn Roy Baron <bjorn3_gh@protonmail.com>
Reviewed-by: Finn Behrens <me@kloenk.dev>
Reviewed-by: Gary Guo <gary@garyguo.net>
[Reworded, adapted for upstream and applied latest changes]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/macros/concat_idents.rs [new file with mode: 0644]
rust/macros/lib.rs