Remove String::truncate()

Current implementation is unsafe because it doesn't check if `new_len`
does lie on a char boundary.
This commit is contained in:
Kogia-sima 2020-12-17 16:24:57 +09:00
parent 2884146359
commit e316c82eb5
2 changed files with 3 additions and 13 deletions

View File

@ -67,16 +67,6 @@ impl Buffer {
self.len = new_len;
}
/// Same as String::truncate
///
/// # Panics
///
/// This method panics if `new_len > self.len()`.
pub(crate) fn truncate(&mut self, new_len: usize) {
assert!(new_len <= self.len);
self.len = new_len;
}
/// Increase the length of buffer by `additional` bytes
///
/// # Safety

View File

@ -47,7 +47,7 @@ impl<'a, T: Render> Render for Upper<'a, T> {
self.0.render(b)?;
let s = b.as_str()[old_len..].to_uppercase();
b.truncate(old_len);
unsafe { b._set_len(old_len) };
b.push_str(&*s);
Ok(())
}
@ -67,7 +67,7 @@ impl<'a, T: Render> Render for Lower<'a, T> {
self.0.render(b)?;
let s = b.as_str()[old_len..].to_lowercase();
b.truncate(old_len);
unsafe { b._set_len(old_len) };
b.push_str(&*s);
Ok(())
}
@ -77,7 +77,7 @@ impl<'a, T: Render> Render for Lower<'a, T> {
self.0.render_escaped(b)?;
let s = b.as_str()[old_len..].to_lowercase();
b.truncate(old_len);
unsafe { b._set_len(old_len) };
b.push_str(&*s);
Ok(())
}