hydro_lang/
staging_util.rs

1use std::marker::PhantomData;
2
3use proc_macro2::{Span, TokenStream};
4use quote::quote;
5
6pub type Invariant<'a, D = ()> = PhantomData<(fn(&'a ()) -> &'a (), D)>;
7
8pub fn get_this_crate() -> TokenStream {
9    let hydro_lang_crate = proc_macro_crate::crate_name("hydro_lang")
10        .expect("hydro_lang should be present in `Cargo.toml`");
11    match hydro_lang_crate {
12        proc_macro_crate::FoundCrate::Itself => quote! { hydro_lang },
13        proc_macro_crate::FoundCrate::Name(name) => {
14            let ident = syn::Ident::new(&name, Span::call_site());
15            quote! { #ident }
16        }
17    }
18}