pub trait Server {
type TokenStream: 'static + Clone + Default;
type Span: 'static + Copy + Eq + Hash;
type Symbol: 'static;
Show 35 methods
// Required methods
fn globals(&mut self) -> ExpnGlobals<Self::Span>;
fn intern_symbol(ident: &str) -> Self::Symbol;
fn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str));
fn injected_env_var(&mut self, var: &str) -> Option<String>;
fn track_env_var(&mut self, var: &str, value: Option<&str>);
fn track_path(&mut self, path: &str);
fn literal_from_str(
&mut self,
s: &str,
) -> Result<Literal<Self::Span, Self::Symbol>, String>;
fn emit_diagnostic(&mut self, diagnostic: Diagnostic<Self::Span>);
fn ts_drop(&mut self, stream: Self::TokenStream);
fn ts_clone(&mut self, stream: &Self::TokenStream) -> Self::TokenStream;
fn ts_is_empty(&mut self, stream: &Self::TokenStream) -> bool;
fn ts_expand_expr(
&mut self,
stream: &Self::TokenStream,
) -> Result<Self::TokenStream, ()>;
fn ts_from_str(&mut self, src: &str) -> Result<Self::TokenStream, String>;
fn ts_to_string(&mut self, stream: &Self::TokenStream) -> String;
fn ts_from_token_tree(
&mut self,
tree: TokenTree<Self::TokenStream, Self::Span, Self::Symbol>,
) -> Self::TokenStream;
fn ts_concat_trees(
&mut self,
base: Option<Self::TokenStream>,
trees: Vec<TokenTree<Self::TokenStream, Self::Span, Self::Symbol>>,
) -> Self::TokenStream;
fn ts_concat_streams(
&mut self,
base: Option<Self::TokenStream>,
streams: Vec<Self::TokenStream>,
) -> Self::TokenStream;
fn ts_into_trees(
&mut self,
stream: Self::TokenStream,
) -> Vec<TokenTree<Self::TokenStream, Self::Span, Self::Symbol>>;
fn span_debug(&mut self, span: Self::Span) -> String;
fn span_parent(&mut self, span: Self::Span) -> Option<Self::Span>;
fn span_source(&mut self, span: Self::Span) -> Self::Span;
fn span_byte_range(&mut self, span: Self::Span) -> Range<usize> โ;
fn span_start(&mut self, span: Self::Span) -> Self::Span;
fn span_end(&mut self, span: Self::Span) -> Self::Span;
fn span_line(&mut self, span: Self::Span) -> usize;
fn span_column(&mut self, span: Self::Span) -> usize;
fn span_file(&mut self, span: Self::Span) -> String;
fn span_local_file(&mut self, span: Self::Span) -> Option<String>;
fn span_join(
&mut self,
span: Self::Span,
other: Self::Span,
) -> Option<Self::Span>;
fn span_subspan(
&mut self,
span: Self::Span,
start: Bound<usize>,
end: Bound<usize>,
) -> Option<Self::Span>;
fn span_resolved_at(
&mut self,
span: Self::Span,
at: Self::Span,
) -> Self::Span;
fn span_source_text(&mut self, span: Self::Span) -> Option<String>;
fn span_save_span(&mut self, span: Self::Span) -> usize;
fn span_recover_proc_macro_span(&mut self, id: usize) -> Self::Span;
fn symbol_normalize_and_validate_ident(
&mut self,
string: &str,
) -> Result<Self::Symbol, ()>;
}๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)Required Associated Typesยง
type TokenStream: 'static + Clone + Default
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)type Span: 'static + Copy + Eq + Hash
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)type Symbol: 'static
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)Required Methodsยง
fn globals(&mut self) -> ExpnGlobals<Self::Span>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)Sourcefn intern_symbol(ident: &str) -> Self::Symbol
๐ฌThis is a nightly-only experimental API. (proc_macro_internals)
fn intern_symbol(ident: &str) -> Self::Symbol
proc_macro_internals)Intern a symbol received from RPC
Sourcefn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str))
๐ฌThis is a nightly-only experimental API. (proc_macro_internals)
fn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str))
proc_macro_internals)Recover the string value of a symbol, and invoke a callback with it.
fn injected_env_var(&mut self, var: &str) -> Option<String>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn track_env_var(&mut self, var: &str, value: Option<&str>)
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn track_path(&mut self, path: &str)
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn literal_from_str( &mut self, s: &str, ) -> Result<Literal<Self::Span, Self::Symbol>, String>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn emit_diagnostic(&mut self, diagnostic: Diagnostic<Self::Span>)
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_drop(&mut self, stream: Self::TokenStream)
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_clone(&mut self, stream: &Self::TokenStream) -> Self::TokenStream
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_is_empty(&mut self, stream: &Self::TokenStream) -> bool
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_expand_expr( &mut self, stream: &Self::TokenStream, ) -> Result<Self::TokenStream, ()>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_from_str(&mut self, src: &str) -> Result<Self::TokenStream, String>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_to_string(&mut self, stream: &Self::TokenStream) -> String
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_from_token_tree( &mut self, tree: TokenTree<Self::TokenStream, Self::Span, Self::Symbol>, ) -> Self::TokenStream
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_concat_trees( &mut self, base: Option<Self::TokenStream>, trees: Vec<TokenTree<Self::TokenStream, Self::Span, Self::Symbol>>, ) -> Self::TokenStream
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_concat_streams( &mut self, base: Option<Self::TokenStream>, streams: Vec<Self::TokenStream>, ) -> Self::TokenStream
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn ts_into_trees( &mut self, stream: Self::TokenStream, ) -> Vec<TokenTree<Self::TokenStream, Self::Span, Self::Symbol>>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_debug(&mut self, span: Self::Span) -> String
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_parent(&mut self, span: Self::Span) -> Option<Self::Span>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_source(&mut self, span: Self::Span) -> Self::Span
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_byte_range(&mut self, span: Self::Span) -> Range<usize> โ
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_start(&mut self, span: Self::Span) -> Self::Span
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_end(&mut self, span: Self::Span) -> Self::Span
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_line(&mut self, span: Self::Span) -> usize
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_column(&mut self, span: Self::Span) -> usize
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_file(&mut self, span: Self::Span) -> String
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_local_file(&mut self, span: Self::Span) -> Option<String>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_join( &mut self, span: Self::Span, other: Self::Span, ) -> Option<Self::Span>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_subspan( &mut self, span: Self::Span, start: Bound<usize>, end: Bound<usize>, ) -> Option<Self::Span>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_resolved_at(&mut self, span: Self::Span, at: Self::Span) -> Self::Span
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_source_text(&mut self, span: Self::Span) -> Option<String>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_save_span(&mut self, span: Self::Span) -> usize
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn span_recover_proc_macro_span(&mut self, id: usize) -> Self::Span
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)fn symbol_normalize_and_validate_ident( &mut self, string: &str, ) -> Result<Self::Symbol, ()>
๐ฌThis is a nightly-only experimental API. (
proc_macro_internals)Dyn Compatibilityยง
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".