Function macro_magic_core::import_tokens_internal

source ·
pub fn import_tokens_internal<T: Into<TokenStream>>(
    tokens: T,
) -> Result<TokenStream>
Expand description

The internal implementation for the import_tokens macro.

You can call this in your own proc macros to make use of the import_tokens functionality directly, though this approach is limited. The arguments should be a TokenStream2 that can parse into an ImportTokensArgs successfully. That is a valid let variable declaration set to equal a path where an #[export_tokens] with the specified ident can be found.

§Example:

use macro_magic_core::*;
use quote::quote;

let some_ident = quote!(my_tokens);
let some_path = quote!(other_crate::exported_item);
let tokens = import_tokens_internal(quote!(let #some_ident = other_crate::ExportedItem)).unwrap();
assert_eq!(
    tokens.to_string(),
    "other_crate :: __export_tokens_tt_exported_item ! { my_tokens , \
    :: macro_magic :: __private :: import_tokens_inner }");

If these tokens were emitted as part of a proc macro, they would expand to a variable declaration like:

let my_tokens: TokenStream2;

where my_tokens contains the tokens of ExportedItem.