Struct proc_macro::bridge::client::Client
source · #[repr(C)]pub struct Client<I, O> {
pub(super) get_handle_counters: extern "C" fn() -> &'static HandleCounters,
pub(super) run: extern "C" fn(_: BridgeConfig<'_>) -> Buffer,
pub(super) _marker: PhantomData<fn(_: I) -> O>,
}
🔬This is a nightly-only experimental API. (
proc_macro_internals
#27812)Expand description
A client-side RPC entry-point, which may be using a different proc_macro
from the one used by the server, but can be invoked compatibly.
Note that the (phantom) I
(“input”) and O
(“output”) type parameters
decorate the Client<I, O>
with the RPC “interface” of the entry-point, but
do not themselves participate in ABI, at all, only facilitate type-checking.
E.g. Client<TokenStream, TokenStream>
is the common proc macro interface,
used for #[proc_macro] fn foo(input: TokenStream) -> TokenStream
,
indicating that the RPC input and output will be serialized token streams,
and forcing the use of APIs that take/return S::TokenStream
, server-side.
Fields§
§get_handle_counters: extern "C" fn() -> &'static HandleCounters
🔬This is a nightly-only experimental API. (
§proc_macro_internals
#27812)run: extern "C" fn(_: BridgeConfig<'_>) -> Buffer
🔬This is a nightly-only experimental API. (
§proc_macro_internals
#27812)_marker: PhantomData<fn(_: I) -> O>
🔬This is a nightly-only experimental API. (
proc_macro_internals
#27812)Implementations§
source§impl Client<TokenStream, TokenStream>
impl Client<TokenStream, TokenStream>
pub const fn expand1(f: impl Fn(TokenStream) -> TokenStream + Copy) -> Self
🔬This is a nightly-only experimental API. (
proc_macro_internals
#27812)source§impl Client<(TokenStream, TokenStream), TokenStream>
impl Client<(TokenStream, TokenStream), TokenStream>
pub const fn expand2( f: impl Fn(TokenStream, TokenStream) -> TokenStream + Copy ) -> Self
🔬This is a nightly-only experimental API. (
proc_macro_internals
#27812)source§impl Client<TokenStream, TokenStream>
impl Client<TokenStream, TokenStream>
pub fn run<S>( &self, strategy: &impl ExecutionStrategy, server: S, input: S::TokenStream, force_show_panics: bool ) -> Result<S::TokenStream, PanicMessage>where S: Server, S::TokenStream: Default,
🔬This is a nightly-only experimental API. (
proc_macro_internals
#27812)source§impl Client<(TokenStream, TokenStream), TokenStream>
impl Client<(TokenStream, TokenStream), TokenStream>
pub fn run<S>( &self, strategy: &impl ExecutionStrategy, server: S, input: S::TokenStream, input2: S::TokenStream, force_show_panics: bool ) -> Result<S::TokenStream, PanicMessage>where S: Server, S::TokenStream: Default,
🔬This is a nightly-only experimental API. (
proc_macro_internals
#27812)Trait Implementations§
Auto Trait Implementations§
impl<I, O> RefUnwindSafe for Client<I, O>
impl<I, O> Send for Client<I, O>
impl<I, O> Sync for Client<I, O>
impl<I, O> Unpin for Client<I, O>
impl<I, O> UnwindSafe for Client<I, O>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more