Struct async_speed_limit::limiter::Resource
source · pub struct Resource<R, C: Clock> { /* private fields */ }Expand description
A speed-limited wrapper of a byte stream.
The Resource can be used to limit speed of
Just like Limiter, the delay is inserted after the data are sent
or received, in which we know the exact amount of bytes transferred to
give an accurate delay. The instantaneous speed can exceed the limit if
many read/write tasks are started simultaneously. Therefore, restricting
the concurrency is also important to avoid breaching the constraint.
Implementations§
source§impl<R, C: Clock> Resource<R, C>
impl<R, C: Clock> Resource<R, C>
sourcepub fn into_inner(self) -> R
pub fn into_inner(self) -> R
Unwraps this value, returns the underlying resource.
sourcepub fn get_ref(&self) -> &R
pub fn get_ref(&self) -> &R
Gets a reference to the underlying resource.
It is inadvisable to directly operate the underlying resource.
sourcepub fn get_mut(&mut self) -> &mut R
pub fn get_mut(&mut self) -> &mut R
Gets a mutable reference to the underlying resource.
It is inadvisable to directly operate the underlying resource.
Trait Implementations§
source§impl<R: AsyncRead, C: Clock> AsyncRead for Resource<R, C>
impl<R: AsyncRead, C: Clock> AsyncRead for Resource<R, C>
source§impl<R: AsyncWrite, C: Clock> AsyncWrite for Resource<R, C>
impl<R: AsyncWrite, C: Clock> AsyncWrite for Resource<R, C>
source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8]
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8] ) -> Poll<Result<usize>>
Attempt to write bytes from
buf into the object. Read moresource§fn poll_write_vectored(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>]
) -> Poll<Result<usize>>
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>] ) -> Poll<Result<usize>>
Attempt to write bytes from
bufs into the object using vectored
IO operations. Read moresource§impl<R: AsyncWrite, C: Clock> AsyncWrite for Resource<R, C>
impl<R: AsyncWrite, C: Clock> AsyncWrite for Resource<R, C>
source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8]
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8] ) -> Poll<Result<usize>>
Attempt to write bytes from
buf into the object. Read moresource§fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
Attempts to flush the object, ensuring that any buffered data reach
their destination. Read more
source§fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
Initiates or attempts to shut down this writer, returning success when
the I/O connection has completely shut down. Read more
source§fn poll_write_vectored(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
bufs: &[IoSlice<'_>]
) -> Poll<Result<usize, Error>>
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>] ) -> Poll<Result<usize, Error>>
Like
poll_write, except that it writes from a slice of buffers. Read moresource§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
Determines if this writer has an efficient
poll_write_vectored
implementation. Read moreimpl<'__pin, R, C: Clock> Unpin for Resource<R, C>where __Origin<'__pin, R, C>: Unpin,
Auto Trait Implementations§
impl<R, C> RefUnwindSafe for Resource<R, C>where C: RefUnwindSafe, R: RefUnwindSafe, <C as Clock>::Delay: RefUnwindSafe,
impl<R, C> Send for Resource<R, C>where C: Send, R: Send, <C as Clock>::Delay: Send, <C as Clock>::Instant: Send,
impl<R, C> Sync for Resource<R, C>where C: Sync, R: Sync, <C as Clock>::Delay: Sync, <C as Clock>::Instant: Send,
impl<R, C> UnwindSafe for Resource<R, C>where C: UnwindSafe, R: UnwindSafe, <C as Clock>::Delay: UnwindSafe,
Blanket Implementations§
source§impl<R> AsyncReadExt for Rwhere
R: AsyncRead + ?Sized,
impl<R> AsyncReadExt for Rwhere R: AsyncRead + ?Sized,
source§fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where Self: Unpin,
Pulls some bytes from this source into the specified buffer,
returning how many bytes were read. Read more
source§fn read_buf<B, 'a>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>where
Self: Sized + Unpin,
B: BufMut,
fn read_buf<B, 'a>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>where Self: Sized + Unpin, B: BufMut,
Pulls some bytes from this source into the specified buffer,
advancing the buffer’s internal cursor. Read more
source§fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where Self: Unpin,
Reads the exact number of bytes required to fill
buf. Read moresource§fn read_u8<'a>(&'a mut self) -> ReadU8<&'a mut Self>where
Self: Unpin,
fn read_u8<'a>(&'a mut self) -> ReadU8<&'a mut Self>where Self: Unpin,
Reads an unsigned 8 bit integer from the underlying reader. Read more
source§fn read_i8<'a>(&'a mut self) -> ReadI8<&'a mut Self>where
Self: Unpin,
fn read_i8<'a>(&'a mut self) -> ReadI8<&'a mut Self>where Self: Unpin,
Reads a signed 8 bit integer from the underlying reader. Read more
source§fn read_u16<'a>(&'a mut self) -> ReadU16<&'a mut Self>where
Self: Unpin,
fn read_u16<'a>(&'a mut self) -> ReadU16<&'a mut Self>where Self: Unpin,
Reads an unsigned 16-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_i16<'a>(&'a mut self) -> ReadI16<&'a mut Self>where
Self: Unpin,
fn read_i16<'a>(&'a mut self) -> ReadI16<&'a mut Self>where Self: Unpin,
Reads a signed 16-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_u32<'a>(&'a mut self) -> ReadU32<&'a mut Self>where
Self: Unpin,
fn read_u32<'a>(&'a mut self) -> ReadU32<&'a mut Self>where Self: Unpin,
Reads an unsigned 32-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_i32<'a>(&'a mut self) -> ReadI32<&'a mut Self>where
Self: Unpin,
fn read_i32<'a>(&'a mut self) -> ReadI32<&'a mut Self>where Self: Unpin,
Reads a signed 32-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_u64<'a>(&'a mut self) -> ReadU64<&'a mut Self>where
Self: Unpin,
fn read_u64<'a>(&'a mut self) -> ReadU64<&'a mut Self>where Self: Unpin,
Reads an unsigned 64-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_i64<'a>(&'a mut self) -> ReadI64<&'a mut Self>where
Self: Unpin,
fn read_i64<'a>(&'a mut self) -> ReadI64<&'a mut Self>where Self: Unpin,
Reads an signed 64-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_u128<'a>(&'a mut self) -> ReadU128<&'a mut Self>where
Self: Unpin,
fn read_u128<'a>(&'a mut self) -> ReadU128<&'a mut Self>where Self: Unpin,
Reads an unsigned 128-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_i128<'a>(&'a mut self) -> ReadI128<&'a mut Self>where
Self: Unpin,
fn read_i128<'a>(&'a mut self) -> ReadI128<&'a mut Self>where Self: Unpin,
Reads an signed 128-bit integer in big-endian order from the
underlying reader. Read more
source§fn read_f32<'a>(&'a mut self) -> ReadF32<&'a mut Self>where
Self: Unpin,
fn read_f32<'a>(&'a mut self) -> ReadF32<&'a mut Self>where Self: Unpin,
Reads an 32-bit floating point type in big-endian order from the
underlying reader. Read more
source§fn read_f64<'a>(&'a mut self) -> ReadF64<&'a mut Self>where
Self: Unpin,
fn read_f64<'a>(&'a mut self) -> ReadF64<&'a mut Self>where Self: Unpin,
Reads an 64-bit floating point type in big-endian order from the
underlying reader. Read more
source§fn read_u16_le<'a>(&'a mut self) -> ReadU16Le<&'a mut Self>where
Self: Unpin,
fn read_u16_le<'a>(&'a mut self) -> ReadU16Le<&'a mut Self>where Self: Unpin,
Reads an unsigned 16-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_i16_le<'a>(&'a mut self) -> ReadI16Le<&'a mut Self>where
Self: Unpin,
fn read_i16_le<'a>(&'a mut self) -> ReadI16Le<&'a mut Self>where Self: Unpin,
Reads a signed 16-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_u32_le<'a>(&'a mut self) -> ReadU32Le<&'a mut Self>where
Self: Unpin,
fn read_u32_le<'a>(&'a mut self) -> ReadU32Le<&'a mut Self>where Self: Unpin,
Reads an unsigned 32-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_i32_le<'a>(&'a mut self) -> ReadI32Le<&'a mut Self>where
Self: Unpin,
fn read_i32_le<'a>(&'a mut self) -> ReadI32Le<&'a mut Self>where Self: Unpin,
Reads a signed 32-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_u64_le<'a>(&'a mut self) -> ReadU64Le<&'a mut Self>where
Self: Unpin,
fn read_u64_le<'a>(&'a mut self) -> ReadU64Le<&'a mut Self>where Self: Unpin,
Reads an unsigned 64-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_i64_le<'a>(&'a mut self) -> ReadI64Le<&'a mut Self>where
Self: Unpin,
fn read_i64_le<'a>(&'a mut self) -> ReadI64Le<&'a mut Self>where Self: Unpin,
Reads an signed 64-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_u128_le<'a>(&'a mut self) -> ReadU128Le<&'a mut Self>where
Self: Unpin,
fn read_u128_le<'a>(&'a mut self) -> ReadU128Le<&'a mut Self>where Self: Unpin,
Reads an unsigned 128-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_i128_le<'a>(&'a mut self) -> ReadI128Le<&'a mut Self>where
Self: Unpin,
fn read_i128_le<'a>(&'a mut self) -> ReadI128Le<&'a mut Self>where Self: Unpin,
Reads an signed 128-bit integer in little-endian order from the
underlying reader. Read more
source§fn read_f32_le<'a>(&'a mut self) -> ReadF32Le<&'a mut Self>where
Self: Unpin,
fn read_f32_le<'a>(&'a mut self) -> ReadF32Le<&'a mut Self>where Self: Unpin,
Reads an 32-bit floating point type in little-endian order from the
underlying reader. Read more
source§fn read_f64_le<'a>(&'a mut self) -> ReadF64Le<&'a mut Self>where
Self: Unpin,
fn read_f64_le<'a>(&'a mut self) -> ReadF64Le<&'a mut Self>where Self: Unpin,
Reads an 64-bit floating point type in little-endian order from the
underlying reader. Read more
source§fn read_to_end<'a>(
&'a mut self,
buf: &'a mut Vec<u8, Global>
) -> ReadToEnd<'a, Self>where
Self: Unpin,
fn read_to_end<'a>( &'a mut self, buf: &'a mut Vec<u8, Global> ) -> ReadToEnd<'a, Self>where Self: Unpin,
Reads all bytes until EOF in this source, placing them into
buf. Read moresource§impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere W: AsyncWrite + ?Sized,
source§fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where Self: Unpin,
Writes a buffer into this writer, returning how many bytes were
written. Read more
source§fn write_vectored<'a, 'b>(
&'a mut self,
bufs: &'a [IoSlice<'b>]
) -> WriteVectored<'a, 'b, Self>where
Self: Unpin,
fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>] ) -> WriteVectored<'a, 'b, Self>where Self: Unpin,
source§fn write_buf<B, 'a>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>where
Self: Sized + Unpin,
B: Buf,
fn write_buf<B, 'a>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>where Self: Sized + Unpin, B: Buf,
Writes a buffer into this writer, advancing the buffer’s internal
cursor. Read more
source§fn write_all_buf<B, 'a>(
&'a mut self,
src: &'a mut B
) -> WriteAllBuf<'a, Self, B>where
Self: Sized + Unpin,
B: Buf,
fn write_all_buf<B, 'a>( &'a mut self, src: &'a mut B ) -> WriteAllBuf<'a, Self, B>where Self: Sized + Unpin, B: Buf,
Attempts to write an entire buffer into this writer. Read more
source§fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where
Self: Unpin,
fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where Self: Unpin,
Attempts to write an entire buffer into this writer. Read more
source§fn write_u8<'a>(&'a mut self, n: u8) -> WriteU8<&'a mut Self>where
Self: Unpin,
fn write_u8<'a>(&'a mut self, n: u8) -> WriteU8<&'a mut Self>where Self: Unpin,
Writes an unsigned 8-bit integer to the underlying writer. Read more
source§fn write_i8<'a>(&'a mut self, n: i8) -> WriteI8<&'a mut Self>where
Self: Unpin,
fn write_i8<'a>(&'a mut self, n: i8) -> WriteI8<&'a mut Self>where Self: Unpin,
Writes a signed 8-bit integer to the underlying writer. Read more
source§fn write_u16<'a>(&'a mut self, n: u16) -> WriteU16<&'a mut Self>where
Self: Unpin,
fn write_u16<'a>(&'a mut self, n: u16) -> WriteU16<&'a mut Self>where Self: Unpin,
Writes an unsigned 16-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_i16<'a>(&'a mut self, n: i16) -> WriteI16<&'a mut Self>where
Self: Unpin,
fn write_i16<'a>(&'a mut self, n: i16) -> WriteI16<&'a mut Self>where Self: Unpin,
Writes a signed 16-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_u32<'a>(&'a mut self, n: u32) -> WriteU32<&'a mut Self>where
Self: Unpin,
fn write_u32<'a>(&'a mut self, n: u32) -> WriteU32<&'a mut Self>where Self: Unpin,
Writes an unsigned 32-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_i32<'a>(&'a mut self, n: i32) -> WriteI32<&'a mut Self>where
Self: Unpin,
fn write_i32<'a>(&'a mut self, n: i32) -> WriteI32<&'a mut Self>where Self: Unpin,
Writes a signed 32-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_u64<'a>(&'a mut self, n: u64) -> WriteU64<&'a mut Self>where
Self: Unpin,
fn write_u64<'a>(&'a mut self, n: u64) -> WriteU64<&'a mut Self>where Self: Unpin,
Writes an unsigned 64-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_i64<'a>(&'a mut self, n: i64) -> WriteI64<&'a mut Self>where
Self: Unpin,
fn write_i64<'a>(&'a mut self, n: i64) -> WriteI64<&'a mut Self>where Self: Unpin,
Writes an signed 64-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_u128<'a>(&'a mut self, n: u128) -> WriteU128<&'a mut Self>where
Self: Unpin,
fn write_u128<'a>(&'a mut self, n: u128) -> WriteU128<&'a mut Self>where Self: Unpin,
Writes an unsigned 128-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_i128<'a>(&'a mut self, n: i128) -> WriteI128<&'a mut Self>where
Self: Unpin,
fn write_i128<'a>(&'a mut self, n: i128) -> WriteI128<&'a mut Self>where Self: Unpin,
Writes an signed 128-bit integer in big-endian order to the
underlying writer. Read more
source§fn write_f32<'a>(&'a mut self, n: f32) -> WriteF32<&'a mut Self>where
Self: Unpin,
fn write_f32<'a>(&'a mut self, n: f32) -> WriteF32<&'a mut Self>where Self: Unpin,
Writes an 32-bit floating point type in big-endian order to the
underlying writer. Read more
source§fn write_f64<'a>(&'a mut self, n: f64) -> WriteF64<&'a mut Self>where
Self: Unpin,
fn write_f64<'a>(&'a mut self, n: f64) -> WriteF64<&'a mut Self>where Self: Unpin,
Writes an 64-bit floating point type in big-endian order to the
underlying writer. Read more
source§fn write_u16_le<'a>(&'a mut self, n: u16) -> WriteU16Le<&'a mut Self>where
Self: Unpin,
fn write_u16_le<'a>(&'a mut self, n: u16) -> WriteU16Le<&'a mut Self>where Self: Unpin,
Writes an unsigned 16-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_i16_le<'a>(&'a mut self, n: i16) -> WriteI16Le<&'a mut Self>where
Self: Unpin,
fn write_i16_le<'a>(&'a mut self, n: i16) -> WriteI16Le<&'a mut Self>where Self: Unpin,
Writes a signed 16-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_u32_le<'a>(&'a mut self, n: u32) -> WriteU32Le<&'a mut Self>where
Self: Unpin,
fn write_u32_le<'a>(&'a mut self, n: u32) -> WriteU32Le<&'a mut Self>where Self: Unpin,
Writes an unsigned 32-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_i32_le<'a>(&'a mut self, n: i32) -> WriteI32Le<&'a mut Self>where
Self: Unpin,
fn write_i32_le<'a>(&'a mut self, n: i32) -> WriteI32Le<&'a mut Self>where Self: Unpin,
Writes a signed 32-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_u64_le<'a>(&'a mut self, n: u64) -> WriteU64Le<&'a mut Self>where
Self: Unpin,
fn write_u64_le<'a>(&'a mut self, n: u64) -> WriteU64Le<&'a mut Self>where Self: Unpin,
Writes an unsigned 64-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_i64_le<'a>(&'a mut self, n: i64) -> WriteI64Le<&'a mut Self>where
Self: Unpin,
fn write_i64_le<'a>(&'a mut self, n: i64) -> WriteI64Le<&'a mut Self>where Self: Unpin,
Writes an signed 64-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_u128_le<'a>(&'a mut self, n: u128) -> WriteU128Le<&'a mut Self>where
Self: Unpin,
fn write_u128_le<'a>(&'a mut self, n: u128) -> WriteU128Le<&'a mut Self>where Self: Unpin,
Writes an unsigned 128-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_i128_le<'a>(&'a mut self, n: i128) -> WriteI128Le<&'a mut Self>where
Self: Unpin,
fn write_i128_le<'a>(&'a mut self, n: i128) -> WriteI128Le<&'a mut Self>where Self: Unpin,
Writes an signed 128-bit integer in little-endian order to the
underlying writer. Read more
source§fn write_f32_le<'a>(&'a mut self, n: f32) -> WriteF32Le<&'a mut Self>where
Self: Unpin,
fn write_f32_le<'a>(&'a mut self, n: f32) -> WriteF32Le<&'a mut Self>where Self: Unpin,
Writes an 32-bit floating point type in little-endian order to the
underlying writer. Read more
source§fn write_f64_le<'a>(&'a mut self, n: f64) -> WriteF64Le<&'a mut Self>where
Self: Unpin,
fn write_f64_le<'a>(&'a mut self, n: f64) -> WriteF64Le<&'a mut Self>where Self: Unpin,
Writes an 64-bit floating point type in little-endian order to the
underlying writer. Read more
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more