]> git.proxmox.com Git - rustc.git/blame - vendor/chalk-solve/src/display/render_trait.rs
New upstream version 1.51.0+dfsg1
[rustc.git] / vendor / chalk-solve / src / display / render_trait.rs
CommitLineData
3dfed10e
XL
1//! `RenderAsRust` trait and related utils.
2use std::fmt::{Display, Formatter, Result};
3
4use chalk_ir::interner::Interner;
5
6use super::state::InternalWriterState;
7
8/// Displays `RenderAsRust` data.
9///
10/// This is a utility struct for making `RenderAsRust` nice to use with rust format macros.
11pub(in crate::display) struct DisplayRenderAsRust<'a, I: Interner, T> {
12 s: &'a InternalWriterState<'a, I>,
13 rar: &'a T,
14}
15
16impl<I: Interner, T: RenderAsRust<I>> Display for DisplayRenderAsRust<'_, I, T> {
17 fn fmt(&self, f: &mut Formatter<'_>) -> Result {
18 self.rar.fmt(self.s, f)
19 }
20}
21
22pub(in crate::display) trait RenderAsRust<I: Interner> {
23 fn fmt(&self, s: &InternalWriterState<'_, I>, f: &mut Formatter<'_>) -> Result;
24 fn display<'a>(&'a self, s: &'a InternalWriterState<'a, I>) -> DisplayRenderAsRust<'a, I, Self>
25 where
26 Self: Sized,
27 {
28 DisplayRenderAsRust { s, rar: self }
29 }
30}