Printer

Trait Printer 

Source
pub trait Printer<'tcx>: Sized {
Show 15 methods // Required methods fn tcx<'a>(&'a self) -> TyCtxt<'tcx>; fn print_region(&mut self, region: Region<'tcx>) -> Result<(), PrintError>; fn print_type(&mut self, ty: Ty<'tcx>) -> Result<(), PrintError>; fn print_dyn_existential( &mut self, predicates: &'tcx List<PolyExistentialPredicate<'tcx>>, ) -> Result<(), PrintError>; fn print_const(&mut self, ct: Const<'tcx>) -> Result<(), PrintError>; fn print_crate_name(&mut self, cnum: CrateNum) -> Result<(), PrintError>; fn print_path_with_simple( &mut self, print_prefix: impl FnOnce(&mut Self) -> Result<(), PrintError>, disambiguated_data: &DisambiguatedDefPathData, ) -> Result<(), PrintError>; fn print_path_with_impl( &mut self, print_prefix: impl FnOnce(&mut Self) -> Result<(), PrintError>, self_ty: Ty<'tcx>, trait_ref: Option<TraitRef<'tcx>>, ) -> Result<(), PrintError>; fn print_path_with_generic_args( &mut self, print_prefix: impl FnOnce(&mut Self) -> Result<(), PrintError>, args: &[GenericArg<'tcx>], ) -> Result<(), PrintError>; fn print_path_with_qualified( &mut self, self_ty: Ty<'tcx>, trait_ref: Option<TraitRef<'tcx>>, ) -> Result<(), PrintError>; // Provided methods fn print_def_path( &mut self, def_id: DefId, args: &'tcx [GenericArg<'tcx>], ) -> Result<(), PrintError> { ... } fn print_impl_path( &mut self, impl_def_id: DefId, args: &'tcx [GenericArg<'tcx>], ) -> Result<(), PrintError> { ... } fn print_coroutine_with_kind( &mut self, def_id: DefId, parent_args: &'tcx [GenericArg<'tcx>], kind: Ty<'tcx>, ) -> Result<(), PrintError> { ... } fn default_print_def_path( &mut self, def_id: DefId, args: &'tcx [GenericArg<'tcx>], ) -> Result<(), PrintError> { ... } fn default_print_impl_path( &mut self, impl_def_id: DefId, self_ty: Ty<'tcx>, impl_trait_ref: Option<TraitRef<'tcx>>, ) -> Result<(), PrintError> { ... }
}
Expand description

A trait that “prints” user-facing type system entities: paths, types, lifetimes, constants, etc. “Printing” here means building up a representation of the entity’s path, usually as a String (e.g. “std::io::Read”) or a Vec<Symbol> (e.g. [sym::std, sym::io, sym::Read]). The representation is built up by appending one or more pieces. The specific details included in the built-up representation depend on the purpose of the printer. The more advanced printers also rely on the PrettyPrinter sub-trait.

Required Methods§

Source

fn tcx<'a>(&'a self) -> TyCtxt<'tcx>

Source

fn print_region(&mut self, region: Region<'tcx>) -> Result<(), PrintError>

Appends a representation of a region.

Source

fn print_type(&mut self, ty: Ty<'tcx>) -> Result<(), PrintError>

Appends a representation of a type.

Source

fn print_dyn_existential( &mut self, predicates: &'tcx List<PolyExistentialPredicate<'tcx>>, ) -> Result<(), PrintError>

Appends a representation of a list of PolyExistentialPredicates.

Source

fn print_const(&mut self, ct: Const<'tcx>) -> Result<(), PrintError>

Appends a representation of a const.

Source

fn print_crate_name(&mut self, cnum: CrateNum) -> Result<(), PrintError>

Appends a representation of a crate name, e.g. std, or even ``.

Source

fn print_path_with_simple( &mut self, print_prefix: impl FnOnce(&mut Self) -> Result<(), PrintError>, disambiguated_data: &DisambiguatedDefPathData, ) -> Result<(), PrintError>

Appends a representation of a (full or partial) simple path, in two parts. print_prefix, when called, appends the representation of the leading segments. The rest of the method appends the representation of the final segment, the details of which are in disambiguated_data.

E.g. std::io + Read -> std::io::Read.

Source

fn print_path_with_impl( &mut self, print_prefix: impl FnOnce(&mut Self) -> Result<(), PrintError>, self_ty: Ty<'tcx>, trait_ref: Option<TraitRef<'tcx>>, ) -> Result<(), PrintError>

Similar to print_path_with_simple, but the final segment is an impl segment.

E.g. slice + <impl [T]> -> slice::<impl [T]>, which may then be further appended to, giving a longer path representation such as slice::<impl [T]>::to_vec_in::ConvertVec.

Source

fn print_path_with_generic_args( &mut self, print_prefix: impl FnOnce(&mut Self) -> Result<(), PrintError>, args: &[GenericArg<'tcx>], ) -> Result<(), PrintError>

Appends a representation of a path ending in generic args, in two parts. print_prefix, when called, appends the leading segments. The rest of the method appends the representation of the generic args. (Some printers choose to skip appending the generic args.)

E.g. ImplementsTraitForUsize + <usize> -> ImplementsTraitForUsize<usize>.

Source

fn print_path_with_qualified( &mut self, self_ty: Ty<'tcx>, trait_ref: Option<TraitRef<'tcx>>, ) -> Result<(), PrintError>

Appends a representation of a qualified path segment, e.g. <OsString as From<&T>>. If trait_ref is None, it may fall back to simpler forms, e.g. <Vec<T>> or just Foo.

Provided Methods§

Source

fn print_def_path( &mut self, def_id: DefId, args: &'tcx [GenericArg<'tcx>], ) -> Result<(), PrintError>

Appends a representation of an entity with a normal path, e.g. “std::io::Read”.

Source

fn print_impl_path( &mut self, impl_def_id: DefId, args: &'tcx [GenericArg<'tcx>], ) -> Result<(), PrintError>

Like print_def_path, but for DefPathData::Impl.

Source

fn print_coroutine_with_kind( &mut self, def_id: DefId, parent_args: &'tcx [GenericArg<'tcx>], kind: Ty<'tcx>, ) -> Result<(), PrintError>

Source

fn default_print_def_path( &mut self, def_id: DefId, args: &'tcx [GenericArg<'tcx>], ) -> Result<(), PrintError>

Source

fn default_print_impl_path( &mut self, impl_def_id: DefId, self_ty: Ty<'tcx>, impl_trait_ref: Option<TraitRef<'tcx>>, ) -> Result<(), PrintError>

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<'tcx> Printer<'tcx> for FmtPrinter<'_, 'tcx>