aboutsummaryrefslogtreecommitdiff
path: root/src/buf/ext/limit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/buf/ext/limit.rs')
-rw-r--r--src/buf/ext/limit.rs74
1 files changed, 0 insertions, 74 deletions
diff --git a/src/buf/ext/limit.rs b/src/buf/ext/limit.rs
deleted file mode 100644
index a36ecee..0000000
--- a/src/buf/ext/limit.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-use crate::BufMut;
-
-use core::{cmp, mem::MaybeUninit};
-
-/// A `BufMut` adapter which limits the amount of bytes that can be written
-/// to an underlying buffer.
-#[derive(Debug)]
-pub struct Limit<T> {
- inner: T,
- limit: usize,
-}
-
-pub(super) fn new<T>(inner: T, limit: usize) -> Limit<T> {
- Limit { inner, limit }
-}
-
-impl<T> Limit<T> {
- /// Consumes this `Limit`, returning the underlying value.
- pub fn into_inner(self) -> T {
- self.inner
- }
-
- /// Gets a reference to the underlying `BufMut`.
- ///
- /// It is inadvisable to directly write to the underlying `BufMut`.
- pub fn get_ref(&self) -> &T {
- &self.inner
- }
-
- /// Gets a mutable reference to the underlying `BufMut`.
- ///
- /// It is inadvisable to directly write to the underlying `BufMut`.
- pub fn get_mut(&mut self) -> &mut T {
- &mut self.inner
- }
-
- /// Returns the maximum number of bytes that can be written
- ///
- /// # Note
- ///
- /// If the inner `BufMut` has fewer bytes than indicated by this method then
- /// that is the actual number of available bytes.
- pub fn limit(&self) -> usize {
- self.limit
- }
-
- /// Sets the maximum number of bytes that can be written.
- ///
- /// # Note
- ///
- /// If the inner `BufMut` has fewer bytes than `lim` then that is the actual
- /// number of available bytes.
- pub fn set_limit(&mut self, lim: usize) {
- self.limit = lim
- }
-}
-
-impl<T: BufMut> BufMut for Limit<T> {
- fn remaining_mut(&self) -> usize {
- cmp::min(self.inner.remaining_mut(), self.limit)
- }
-
- fn bytes_mut(&mut self) -> &mut [MaybeUninit<u8>] {
- let bytes = self.inner.bytes_mut();
- let end = cmp::min(bytes.len(), self.limit);
- &mut bytes[..end]
- }
-
- unsafe fn advance_mut(&mut self, cnt: usize) {
- assert!(cnt <= self.limit);
- self.inner.advance_mut(cnt);
- self.limit -= cnt;
- }
-}