77T3TBBG5VN2Q4AUXHQVZTIFOSXDGTHW72J4MLX4P7LMYQURYZJAC SMF45OOVG5OQLHXVD4AG2D6RFHGH55MO2PVBRPBHAOUTIKUE25IQC KVTZ5BUW7V7RZ3STMQXF6LXVLMGRXDBEOPRBTHX2O4HELTQ2467QC GFUITBG5JGUCDMG34FEMPPJAZGQKURXA5L2RYS6YOQC4DIQGASMAC EKYR4HDT6DHI7H5YMSHEBHXLPDCA2X2XNXYHDKHWGMPHNVTUBCMQC GZZOJ7ZUSBPI3HXIV5UCFNMCDAMZPPLISY2UDV73FDN74HZ3AWJAC CITEDKPB6MKVZUEYEDE5ZKTNVY35HCOAXKDPYG7YLLEOVFNMSRXQC 3ZZ75E2AOF7DO3TMR422QV7ZXNYOQZTOGF67LVSCEMX6N75Y36LAC RIKD63GT7RFV3UAV4BYD57GFXKXALWUP6J7AAHB3M6JVAZ3WFTXAC YNTEYSW7NVBWQLJU45XRK7AWQR5NWFOB4UUVVQ62ERZOO2QJJGAAC IPMYODUQCBXWWBP23CX5LCGRKEOOX7UCKYJALNPFS7DCX6NL4R7AC N7U2FHPRHGARPZ6M7LYBDJ52NMYE23VD5YALZ7CC76W3V5OLBP7QC XRD42IPQNR7ZIUUFEDXZV7GHHGTG725FSCNJOROZSGYYRAKTVWVAC FMOQYTXLYJX36LWFNUMBNQEOGTXYFPH2XKBXR62MTMXPQ6BY3B3QC XVQANH3QBLBY3GW4MC273JN6HLJZ6UJJMAXGCQT5HXQSGOPCSSHAC RPCNDQQ5QQ3MKJR6IV65CLM4YLF3GTYGUFDALASKEVH3R6EW4OGQC QC7NT7OSHSES2YXEDEGK7JLCEGZCNQVC7ATCYQMV7BA4IVJCHOAAC CRSOWJH2FLUWC6ZJDOYFN4QQP2VKRDWSDNCH3FLYJRYJSN5KWXNAC [dependencies]indenter = "0.1.1"
pub fn context<T: Any>(&self) -> Option<&T> {self.inner.context()
pub fn member_mut<T: Any>(&mut self) -> Option<&mut T> {self.inner.member_mut()}pub fn context(&self) -> &C {&self.inner.context}pub fn context_mut(&mut self) -> &mut C {&mut self.inner.context
impl<T> Write for Indented<'_, T>whereT: Write,{fn write_str(&mut self, s: &str) -> fmt::Result {for (i, line) in s.split('\n').enumerate() {if !self.started {self.started = true;match self.number {Some(number) => write!(self.inner, "{: >5}: ", number)?,None => self.inner.write_str(" ")?,}} else if i > 0 {self.inner.write_char('\n')?;if self.number.is_some() {self.inner.write_str(" ")?;} else {self.inner.write_str(" ")?;}}self.inner.write_str(line)?;}Ok(())}}#[cfg(test)]mod tests {use super::*;use crate::alloc::String;#[test]fn one_digit() {let input = "verify\nthis";let expected = " 2: verify\n this";let mut output = String::new();Indented {inner: &mut output,number: Some(2),started: false,}.write_str(input).unwrap();assert_eq!(expected, output);}#[test]fn two_digits() {let input = "verify\nthis";let expected = " 12: verify\n this";let mut output = String::new();Indented {inner: &mut output,number: Some(12),started: false,}.write_str(input).unwrap();assert_eq!(expected, output);}#[test]fn no_digits() {let input = "verify\nthis";let expected = " verify\n this";let mut output = String::new();Indented {inner: &mut output,number: None,started: false,}.write_str(input).unwrap();assert_eq!(expected, output);}}
let mut indented = fmt::Indented {inner: f,number: if multiple { Some(n) } else { None },started: false,};write!(indented, "{}", error)?;
if multiple {write!(indenter::Indented::numbered(f, n), "{}", error)?;} else {write!(indenter::Indented::new(f), "{}", error)?;}