rustc_ast_pretty::pprust::state

Trait PrintState

source
pub trait PrintState<'a>: Deref<Target = Printer> + DerefMut {
Show 47 methods // Required methods fn comments(&self) -> Option<&Comments<'a>>; fn comments_mut(&mut self) -> Option<&mut Comments<'a>>; fn ann_post(&mut self, ident: Ident); fn print_generic_args( &mut self, args: &GenericArgs, colons_before_params: bool, ); // Provided methods fn print_ident(&mut self, ident: Ident) { ... } fn strsep<T, F>( &mut self, sep: &'static str, space_before: bool, b: Breaks, elts: &[T], op: F, ) where F: FnMut(&mut Self, &T) { ... } fn commasep<T, F>(&mut self, b: Breaks, elts: &[T], op: F) where F: FnMut(&mut Self, &T) { ... } fn maybe_print_comment(&mut self, pos: BytePos) -> bool { ... } fn print_comment(&mut self, cmnt: Comment) { ... } fn peek_comment<'b>(&'b self) -> Option<&'b Comment> where 'a: 'b { ... } fn next_comment(&mut self) -> Option<Comment> { ... } fn maybe_print_trailing_comment( &mut self, span: Span, next_pos: Option<BytePos>, ) { ... } fn print_remaining_comments(&mut self) { ... } fn print_string(&mut self, st: &str, style: StrStyle) { ... } fn print_inner_attributes(&mut self, attrs: &[Attribute]) -> bool { ... } fn print_outer_attributes(&mut self, attrs: &[Attribute]) -> bool { ... } fn print_either_attributes( &mut self, attrs: &[Attribute], kind: AttrStyle, is_inline: bool, trailing_hardbreak: bool, ) -> bool { ... } fn print_attribute_inline(&mut self, attr: &Attribute, is_inline: bool) { ... } fn print_attr_item(&mut self, item: &AttrItem, span: Span) { ... } fn print_tt( &mut self, tt: &TokenTree, convert_dollar_crate: bool, ) -> Spacing { ... } fn print_tts(&mut self, tts: &TokenStream, convert_dollar_crate: bool) { ... } fn print_mac_common( &mut self, header: Option<MacHeader<'_>>, has_bang: bool, ident: Option<Ident>, delim: Delimiter, tts: &TokenStream, convert_dollar_crate: bool, span: Span, ) { ... } fn print_mac_def( &mut self, macro_def: &MacroDef, ident: &Ident, sp: Span, print_visibility: impl FnOnce(&mut Self), ) { ... } fn print_path( &mut self, path: &Path, colons_before_params: bool, depth: usize, ) { ... } fn print_path_segment( &mut self, segment: &PathSegment, colons_before_params: bool, ) { ... } fn head<S: Into<Cow<'static, str>>>(&mut self, w: S) { ... } fn bopen(&mut self) { ... } fn bclose_maybe_open(&mut self, span: Span, empty: bool, close_box: bool) { ... } fn bclose(&mut self, span: Span, empty: bool) { ... } fn break_offset_if_not_bol(&mut self, n: usize, off: isize) { ... } fn nonterminal_to_string(&self, nt: &Nonterminal) -> String { ... } fn token_kind_to_string(&self, tok: &TokenKind) -> Cow<'static, str> { ... } fn token_kind_to_string_ext( &self, tok: &TokenKind, convert_dollar_crate: Option<Span>, ) -> Cow<'static, str> { ... } fn token_to_string(&self, token: &Token) -> Cow<'static, str> { ... } fn token_to_string_ext( &self, token: &Token, convert_dollar_crate: bool, ) -> Cow<'static, str> { ... } fn ty_to_string(&self, ty: &Ty) -> String { ... } fn pat_to_string(&self, pat: &Pat) -> String { ... } fn expr_to_string(&self, e: &Expr) -> String { ... } fn meta_item_lit_to_string(&self, lit: &MetaItemLit) -> String { ... } fn stmt_to_string(&self, stmt: &Stmt) -> String { ... } fn item_to_string(&self, i: &Item) -> String { ... } fn path_to_string(&self, p: &Path) -> String { ... } fn vis_to_string(&self, v: &Visibility) -> String { ... } fn block_to_string(&self, blk: &Block) -> String { ... } fn attr_item_to_string(&self, ai: &AttrItem) -> String { ... } fn tts_to_string(&self, tokens: &TokenStream) -> String { ... } fn to_string(f: impl FnOnce(&mut State<'_>)) -> String { ... }
}
Expand description

This trait is used for both AST and HIR pretty-printing.

Required Methods§

source

fn comments(&self) -> Option<&Comments<'a>>

source

fn comments_mut(&mut self) -> Option<&mut Comments<'a>>

source

fn ann_post(&mut self, ident: Ident)

source

fn print_generic_args(&mut self, args: &GenericArgs, colons_before_params: bool)

Provided Methods§

source

fn print_ident(&mut self, ident: Ident)

source

fn strsep<T, F>( &mut self, sep: &'static str, space_before: bool, b: Breaks, elts: &[T], op: F, )
where F: FnMut(&mut Self, &T),

source

fn commasep<T, F>(&mut self, b: Breaks, elts: &[T], op: F)
where F: FnMut(&mut Self, &T),

source

fn maybe_print_comment(&mut self, pos: BytePos) -> bool

source

fn print_comment(&mut self, cmnt: Comment)

source

fn peek_comment<'b>(&'b self) -> Option<&'b Comment>
where 'a: 'b,

source

fn next_comment(&mut self) -> Option<Comment>

source

fn maybe_print_trailing_comment( &mut self, span: Span, next_pos: Option<BytePos>, )

source

fn print_remaining_comments(&mut self)

source

fn print_string(&mut self, st: &str, style: StrStyle)

source

fn print_inner_attributes(&mut self, attrs: &[Attribute]) -> bool

source

fn print_outer_attributes(&mut self, attrs: &[Attribute]) -> bool

source

fn print_either_attributes( &mut self, attrs: &[Attribute], kind: AttrStyle, is_inline: bool, trailing_hardbreak: bool, ) -> bool

source

fn print_attribute_inline(&mut self, attr: &Attribute, is_inline: bool)

source

fn print_attr_item(&mut self, item: &AttrItem, span: Span)

source

fn print_tt(&mut self, tt: &TokenTree, convert_dollar_crate: bool) -> Spacing

This doesn’t deserve to be called “pretty” printing, but it should be meaning-preserving. A quick hack that might help would be to look at the spans embedded in the TTs to decide where to put spaces and newlines. But it’d be better to parse these according to the grammar of the appropriate macro, transcribe back into the grammar we just parsed from, and then pretty-print the resulting AST nodes (so, e.g., we print expression arguments as expressions). It can be done! I think.

source

fn print_tts(&mut self, tts: &TokenStream, convert_dollar_crate: bool)

source

fn print_mac_common( &mut self, header: Option<MacHeader<'_>>, has_bang: bool, ident: Option<Ident>, delim: Delimiter, tts: &TokenStream, convert_dollar_crate: bool, span: Span, )

source

fn print_mac_def( &mut self, macro_def: &MacroDef, ident: &Ident, sp: Span, print_visibility: impl FnOnce(&mut Self), )

source

fn print_path(&mut self, path: &Path, colons_before_params: bool, depth: usize)

source

fn print_path_segment( &mut self, segment: &PathSegment, colons_before_params: bool, )

source

fn head<S: Into<Cow<'static, str>>>(&mut self, w: S)

source

fn bopen(&mut self)

source

fn bclose_maybe_open(&mut self, span: Span, empty: bool, close_box: bool)

source

fn bclose(&mut self, span: Span, empty: bool)

source

fn break_offset_if_not_bol(&mut self, n: usize, off: isize)

source

fn nonterminal_to_string(&self, nt: &Nonterminal) -> String

source

fn token_kind_to_string(&self, tok: &TokenKind) -> Cow<'static, str>

Print the token kind precisely, without converting $crate into its respective crate name.

source

fn token_kind_to_string_ext( &self, tok: &TokenKind, convert_dollar_crate: Option<Span>, ) -> Cow<'static, str>

source

fn token_to_string(&self, token: &Token) -> Cow<'static, str>

Print the token precisely, without converting $crate into its respective crate name.

source

fn token_to_string_ext( &self, token: &Token, convert_dollar_crate: bool, ) -> Cow<'static, str>

source

fn ty_to_string(&self, ty: &Ty) -> String

source

fn pat_to_string(&self, pat: &Pat) -> String

source

fn expr_to_string(&self, e: &Expr) -> String

source

fn meta_item_lit_to_string(&self, lit: &MetaItemLit) -> String

source

fn stmt_to_string(&self, stmt: &Stmt) -> String

source

fn item_to_string(&self, i: &Item) -> String

source

fn path_to_string(&self, p: &Path) -> String

source

fn vis_to_string(&self, v: &Visibility) -> String

source

fn block_to_string(&self, blk: &Block) -> String

source

fn attr_item_to_string(&self, ai: &AttrItem) -> String

source

fn tts_to_string(&self, tokens: &TokenStream) -> String

source

fn to_string(f: impl FnOnce(&mut State<'_>)) -> String

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

source§

impl<'a> PrintState<'a> for State<'a>