aboutsummaryrefslogtreecommitdiffstats
path: root/src/row.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-11 05:00:49 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-11 05:00:49 -0500
commitc61c85a7985358d726cc0ba0649ce9b269b62d5c (patch)
treee26d6e4964e2845fbadc7381ecf4a1f5d2e18ce7 /src/row.rs
parent805f9348bfdbfea6cc48e2f03946ec84de4a3c53 (diff)
downloadvt100-rust-c61c85a7985358d726cc0ba0649ce9b269b62d5c.tar.gz
vt100-rust-c61c85a7985358d726cc0ba0649ce9b269b62d5c.zip
stop using formats at all
they are too slow
Diffstat (limited to 'src/row.rs')
-rw-r--r--src/row.rs70
1 files changed, 15 insertions, 55 deletions
diff --git a/src/row.rs b/src/row.rs
index ff855eb..26e117b 100644
--- a/src/row.rs
+++ b/src/row.rs
@@ -1,5 +1,5 @@
+use crate::term::BufWrite as _;
use std::convert::TryInto as _;
-use std::io::Write as _;
#[derive(Clone, Debug)]
pub struct Row {
@@ -87,8 +87,6 @@ impl Row {
}
if cell.has_contents() {
- // using write! here is significantly slower, for some reason
- // write!(contents, "{}", cell.contents()).unwrap();
contents.push_str(&cell.contents());
} else {
contents.push(' ');
@@ -135,26 +133,15 @@ impl Row {
|| prev_pos.col != self.cols()
|| pos.col != 0
{
- write!(
- contents,
- "{}{}",
- crate::term::CRLF::default(),
- crate::term::MoveRight::new(pos.col)
- )
- .unwrap();
+ crate::term::CRLF::default().write_buf(contents);
+ crate::term::MoveRight::new(pos.col)
+ .write_buf(contents);
}
} else if prev_pos.row == pos.row {
- write!(
- contents,
- "{}",
- crate::term::MoveRight::new(
- pos.col - prev_pos.col
- )
- )
- .unwrap();
+ crate::term::MoveRight::new(pos.col - prev_pos.col)
+ .write_buf(contents);
} else {
- write!(contents, "{}", crate::term::MoveTo::new(pos))
- .unwrap();
+ crate::term::MoveTo::new(pos).write_buf(contents);
}
prev_pos = pos;
}
@@ -167,9 +154,6 @@ impl Row {
prev_attrs = *attrs;
}
- // using write! here is significantly slower, for some
- // reason
- // write!(contents, "{}", cell.contents()).unwrap();
contents.extend(cell.contents().as_bytes());
prev_pos.col += if cell.is_wide() { 2 } else { 1 };
} else {
@@ -178,12 +162,7 @@ impl Row {
prev_attrs = *attrs;
}
- write!(
- contents,
- "{}",
- crate::term::EraseChar::default(),
- )
- .unwrap();
+ crate::term::EraseChar::default().write_buf(contents);
}
}
}
@@ -228,28 +207,17 @@ impl Row {
|| prev_pos.col != self.cols()
|| pos.col != 0
{
- write!(
- contents,
- "{}{}",
- crate::term::CRLF::default(),
- crate::term::MoveRight::new(pos.col)
- )
- .unwrap();
+ crate::term::CRLF::default().write_buf(contents);
+ crate::term::MoveRight::new(pos.col)
+ .write_buf(contents);
}
} else if prev_pos.row == pos.row
&& prev_pos.col < pos.col
{
- write!(
- contents,
- "{}",
- crate::term::MoveRight::new(
- pos.col - prev_pos.col
- )
- )
- .unwrap();
+ crate::term::MoveRight::new(pos.col - prev_pos.col)
+ .write_buf(contents);
} else {
- write!(contents, "{}", crate::term::MoveTo::new(pos))
- .unwrap();
+ crate::term::MoveTo::new(pos).write_buf(contents);
}
prev_pos = pos;
}
@@ -262,9 +230,6 @@ impl Row {
prev_attrs = *attrs;
}
- // using write! here is significantly slower, for some
- // reason
- // write!(contents, "{}", cell.contents()).unwrap();
contents.extend(cell.contents().as_bytes());
prev_pos.col += if cell.is_wide() { 2 } else { 1 };
} else {
@@ -273,12 +238,7 @@ impl Row {
prev_attrs = *attrs;
}
- write!(
- contents,
- "{}",
- crate::term::EraseChar::default(),
- )
- .unwrap();
+ crate::term::EraseChar::default().write_buf(contents);
}
}
}