summaryrefslogtreecommitdiff
path: root/src/eval/str.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-08-31 16:25:12 +0200
committerLaurenz <laurmaedje@gmail.com>2021-08-31 16:25:12 +0200
commit7f48e8fe6668c5b2fdc62cc70e6bcffb744f411c (patch)
tree6ec437098d9f6df511cfbc0805ac51af288c4eec /src/eval/str.rs
parent3481d8cc81a2b3a14118869c7f0ffe204ff3efc8 (diff)
Make user-facing "debug" representation use Debug instead of Display
Diffstat (limited to 'src/eval/str.rs')
-rw-r--r--src/eval/str.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/eval/str.rs b/src/eval/str.rs
index 099a4363..59e0887a 100644
--- a/src/eval/str.rs
+++ b/src/eval/str.rs
@@ -1,6 +1,6 @@
use std::borrow::Borrow;
use std::convert::TryFrom;
-use std::fmt::{self, Debug, Display, Formatter, Write};
+use std::fmt::{self, Debug, Formatter, Write};
use std::ops::{Add, AddAssign, Deref};
use crate::diag::StrResult;
@@ -10,9 +10,9 @@ use crate::util::EcoString;
macro_rules! format_str {
($($tts:tt)*) => {{
use std::fmt::Write;
- let mut s = $crate::util::EcoString::new();
+ let mut s = $crate::eval::Str::new();
write!(s, $($tts)*).unwrap();
- $crate::eval::Str::from(s)
+ s
}};
}
@@ -67,12 +67,6 @@ impl Deref for Str {
impl Debug for Str {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- Debug::fmt(&self.0, f)
- }
-}
-
-impl Display for Str {
- fn fmt(&self, f: &mut Formatter) -> fmt::Result {
f.write_char('"')?;
for c in self.chars() {
match c {
@@ -103,6 +97,16 @@ impl AddAssign for Str {
}
}
+impl Write for Str {
+ fn write_str(&mut self, s: &str) -> fmt::Result {
+ self.0.write_str(s)
+ }
+
+ fn write_char(&mut self, c: char) -> fmt::Result {
+ self.0.write_char(c)
+ }
+}
+
impl AsRef<str> for Str {
fn as_ref(&self) -> &str {
self