24 releases
0.8.4 | Aug 25, 2024 |
---|---|
0.8.3 | Jul 8, 2024 |
0.8.0 | Nov 16, 2023 |
0.7.1 | May 21, 2023 |
0.5.1 | Jun 19, 2022 |
#83 in Procedural macros
635,634 downloads per month
Used in 273 crates
(11 directly)
13KB
96 lines
Use statements in quote!
Description
Macro to simplify using Types in the quote!
macro.
Usage
The quote_use!
macro can be used just like quote!
, but with the added functionality of
adding use statements at the top:
quote_use!{
use std::fs::read;
read("src/main.rs")
}
This will expand to the equivalent statement using quote!
:
quote!{
::std::fs::read::read("src/main.rs")
}
Prelude
This also allows to use contents of the rust prelude directly:
quote_use!{
Some("src/main.rs")
}
Overriding prelude
When you want to use your own type instead of the prelude type this can be achieved by simply importing it like so
quote_use!{
use anyhow::Result;
Result
}
Different preludes
By default quote_use!
uses the std prelude for 2021 edition,
but this can be configured via features, and also completely disabled.
prelude_std
: Enablesstd::prelude::v1
(incompatible withprelude_core
)prelude_core
: Enablescore::prelude::v1
(incompatible withprelude_std
)prelude_2021
: Enablescore::prelude::rust_2021
(requires eitherprelude_std
orprelude_core
)
Other quote macros
There are also variants for other quote macros from syn and quote:
quote_use!
andquote_spanned_use!
as replacement forquote!
andquote_spanned!
respectivelyparse_quote_use!
andparse_quote_spanned_use!
forparse_quote!
andparse_quote_spanned!
Auto namespacing idents
Until Span::def_site
is stabilized, identifiers in e.g. let
bindings in proc-macro expansions can collide with e.g. constants.
To circumvent this you can enable the feature namespace_idents
which will replace all
identifiers with autonamespaced ones using the pattern "__{crate_name}_{ident}"
.
Dependencies
~320–770KB
~18K SLoC