chalk_solve/display/
identifiers.rs

1//! Writer logic for simple IDs
2//!
3//! `RenderAsRust` impls for identifiers which are either too small or too
4//! shared to belong anywhere else belong here.
5use std::fmt::{Formatter, Result};
6
7use chalk_ir::interner::Interner;
8use chalk_ir::*;
9
10use super::{render_trait::RenderAsRust, state::InternalWriterState};
11
12impl<I: Interner> RenderAsRust<I> for AdtId<I> {
13    fn fmt(&self, s: &InternalWriterState<'_, I>, f: &'_ mut Formatter<'_>) -> Result {
14        // TODO: use debug methods?
15        write!(
16            f,
17            "{}",
18            s.alias_for_adt_id_name(self.0, s.db().adt_name(*self))
19        )
20    }
21}
22
23impl<I: Interner> RenderAsRust<I> for TraitId<I> {
24    fn fmt(&self, s: &InternalWriterState<'_, I>, f: &'_ mut Formatter<'_>) -> Result {
25        // TODO: use debug methods?
26        write!(
27            f,
28            "{}",
29            s.alias_for_id_name(self.0, s.db().trait_name(*self))
30        )
31    }
32}
33
34impl<I: Interner> RenderAsRust<I> for AssocTypeId<I> {
35    fn fmt(&self, s: &InternalWriterState<'_, I>, f: &'_ mut Formatter<'_>) -> Result {
36        // TODO: use debug methods?
37        write!(
38            f,
39            "{}",
40            s.alias_for_id_name(self.0, s.db().assoc_type_name(*self))
41        )
42    }
43}
44
45impl<I: Interner> RenderAsRust<I> for OpaqueTyId<I> {
46    fn fmt(&self, s: &InternalWriterState<'_, I>, f: &'_ mut Formatter<'_>) -> Result {
47        // TODO: use debug methods?
48        write!(
49            f,
50            "{}",
51            s.alias_for_id_name(self.0, s.db().opaque_type_name(*self))
52        )
53    }
54}