find-crate
Find the crate name from the current Cargo.toml.
When writing declarative macros, $crate representing the current crate is
very useful, but procedural macros do not have this. If you know the current
name of the crate you want to use, you can do the same thing as $crate.
This crate provides the features to make it easy.
Usage
Add this to your Cargo.toml:
[]
= "0.7"
Examples
find_crate function 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;
Using Manifest to search for multiple crates. It is much more efficient
than using find_crate function for each crate.
use Manifest;
use ;
use ;
const CRATE_NAMES: & = &;
By default it will be searched from dependencies and dev-dependencies.
This behavior can be adjusted by changing the [Manifest::dependencies] field.
find_crate and Manifest::new functions read Cargo.toml in
CARGO_MANIFEST_DIR as manifest.
Alternatives
If you write function-like procedural macros, you can combine it with declarative macros to support both crate renaming and macro re-exporting.
This crate is intended to provide more powerful features such as support for multiple crate names and versions. For general purposes, proc-macro-crate, which provides a simpler API, may be easier to use.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
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.