deorbit-macro 0.1.2

A dependency injection framework for Rust
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use proc_macro2::TokenStream;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::{format_ident, quote};

pub fn resolve_crate() -> TokenStream {
    let found = crate_name("deorbit").expect("deorbit must be present");

    match found {
        // This is the fix! If we are inside 'deorbit', use 'crate'
        FoundCrate::Itself => quote!(crate),
        // If we are an external user, use the name (usually '::deorbit')
        FoundCrate::Name(name) => {
            let ident = format_ident!("{}", name);
            quote!(::#ident)
        }
    }
}