find-crate
Find the crate name from the current Cargo.toml
($crate
for proc-macro).
When writing declarative macros, $crate
representing the current crate is very useful, but procedural macros do not have this. To do the same thing as $crate
with procedural macros, you need to know the current name of the crate you want to use as $crate
. This crate provides the features to make it easy.
Usage
Add this to your Cargo.toml
:
[]
= "0.1"
Now, you can use find-crate:
use find_crate;
The current version of find-crate requires Rust 1.30 or later.
Examples
find_crate()
gets the crate name from the current Cargo.toml
.
use find_crate;
use ;
use quote;
As in this example, it is easy to handle cases where proc-macro is exported from multiple crates.
use find_crate;
use ;
use quote;
Search for multiple crates. It is much more efficient than using find_crate()
for each crate.
use Manifest;
use ;
use quote;
const CRATE_NAMES: & = &;
By default it will be searched from dependencies
, dev-dependencies
and build-dependencies
.
Also, find_crate()
and Manifest::new()
read Cargo.toml
in CARGO_MANIFEST_DIR
as manifest.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.