zeloxy 0.4.0

A library for creating lightweight, async, and lag-free proxy connections.
Documentation
use tokio::io::{AsyncRead, AsyncReadExt};

/// Отдельная рука для чтения данных из потока
pub struct ProxyReader {
  read_stream: Box<dyn AsyncRead + Unpin + Send>,
}

impl ProxyReader {
  /// Функция создания нового `ProxyReader` из потока чтения
  pub fn new<R>(read_stream: R) -> Self
  where
    R: AsyncRead + Unpin + Send + 'static,
  {
    Self {
      read_stream: Box::new(read_stream),
    }
  }

  /// Метод чтения буффера из потока
  pub async fn read(&mut self, buffer: &mut [u8]) -> std::io::Result<usize> {
    self.read_stream.read_exact(buffer).await
  }

  /// Метод чтения буффера из потока до конца
  pub async fn read_to_end(&mut self, buffer: &mut Vec<u8>) -> std::io::Result<usize> {
    self.read_stream.read_to_end(buffer).await
  }
}