1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
use crate::{uWrite, Formatter}; pub trait DoAsFormatter { type Writer: uWrite; fn do_as_formatter( self, f: impl FnOnce(&mut Formatter<'_, Self::Writer>) -> Result<(), <Self::Writer as uWrite>::Error>, ) -> Result<(), <Self::Writer as uWrite>::Error>; } impl<W> DoAsFormatter for &'_ mut W where W: uWrite, { type Writer = W; fn do_as_formatter( self, f: impl FnOnce(&mut Formatter<'_, W>) -> Result<(), W::Error>, ) -> Result<(), W::Error> { f(&mut Formatter::new(self)) } } impl<W> DoAsFormatter for &'_ mut Formatter<'_, W> where W: uWrite, { type Writer = W; fn do_as_formatter( self, f: impl FnOnce(&mut Formatter<'_, W>) -> Result<(), W::Error>, ) -> Result<(), W::Error> { f(self) } }