1 //! FIXME: write short doc here
5 use crate::db::HirDatabase;
7 pub struct HirFormatter<'a, 'b, DB> {
9 fmt: &'a mut fmt::Formatter<'b>,
12 pub trait HirDisplay {
13 fn hir_fmt(&self, f: &mut HirFormatter<impl HirDatabase>) -> fmt::Result;
14 fn display<'a, DB>(&'a self, db: &'a DB) -> HirDisplayWrapper<'a, DB, Self>
18 HirDisplayWrapper(db, self)
22 impl<'a, 'b, DB> HirFormatter<'a, 'b, DB>
26 pub fn write_joined<T: HirDisplay>(
28 iter: impl IntoIterator<Item = T>,
34 write!(self, "{}", sep)?;
42 /// This allows using the `write!` macro directly with a `HirFormatter`.
43 pub fn write_fmt(&mut self, args: fmt::Arguments) -> fmt::Result {
44 fmt::write(self.fmt, args)
48 pub struct HirDisplayWrapper<'a, DB, T>(&'a DB, &'a T);
50 impl<'a, DB, T> fmt::Display for HirDisplayWrapper<'a, DB, T>
55 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
56 self.1.hir_fmt(&mut HirFormatter { db: self.0, fmt: f })