From 0a9e7c57434b96a3ab4bfc6813ec2133676ee609 Mon Sep 17 00:00:00 2001 From: nils <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 12 Sep 2022 08:23:27 +0200 Subject: [PATCH] better write --- src/lib.rs | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 7ec0122..f3a77b1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,12 +3,41 @@ extern crate self as mono_fmt; pub use mono_fmt_macro::format_args; -use std::fmt::{Error, Write}; use crate::arguments::Arguments; pub type Result = std::result::Result<(), Error>; +#[derive(Debug)] +pub struct Error; + +pub trait Write { + fn write_str(&mut self, str: &str) -> Result; + fn write_char(&mut self, char: char) -> Result; +} + +impl Write for String { + fn write_str(&mut self, str: &str) -> Result { + self.push_str(str); + Ok(()) + } + + fn write_char(&mut self, char: char) -> Result { + self.push(char); + Ok(()) + } +} + +impl Write for &mut W { + fn write_str(&mut self, str: &str) -> Result { + ::write_str(self, str) + } + + fn write_char(&mut self, char: char) -> Result { + ::write_char(self, char) + } +} + trait Debug { fn fmt(&self, f: &mut Formatter) -> Result; } @@ -59,8 +88,7 @@ pub fn format(args: A) -> String { } mod arguments { - use crate::{Debug, Display, Formatter, Result}; - use std::fmt::Write; + use crate::{Debug, Display, Formatter, Result, Write}; pub trait Arguments { fn fmt(&self, f: &mut Formatter) -> Result; } @@ -140,7 +168,6 @@ macro_rules! format { #[cfg(test)] mod tests { - use crate::format; #[test] @@ -161,7 +188,6 @@ mod tests { assert_eq!(result, "oowuwu omg"); } - #[test] fn debug() { let result = format!("test {:?} hello", "uwu");