diff --git a/libraries/droplet/Cargo.lock b/libraries/droplet/Cargo.lock index 17f4ffc1..2db3ae35 100644 --- a/libraries/droplet/Cargo.lock +++ b/libraries/droplet/Cargo.lock @@ -175,7 +175,7 @@ dependencies = [ [[package]] name = "droplet-rs" -version = "0.9.0" +version = "0.9.1" dependencies = [ "anyhow", "async-trait", diff --git a/libraries/droplet/Cargo.toml b/libraries/droplet/Cargo.toml index 12d2d69d..63d2eb0f 100644 --- a/libraries/droplet/Cargo.toml +++ b/libraries/droplet/Cargo.toml @@ -2,7 +2,7 @@ edition = "2021" authors = ["Drop-OSS"] name = "droplet-rs" -version = "0.9.0" +version = "0.9.1" license = "AGPL-3.0-only" description = "Droplet is a `napi.rs` Rust/Node.js package full of high-performance and low-level utils for Drop" diff --git a/libraries/droplet/src/versions/types.rs b/libraries/droplet/src/versions/types.rs index 4fe2503c..69a69f51 100644 --- a/libraries/droplet/src/versions/types.rs +++ b/libraries/droplet/src/versions/types.rs @@ -11,33 +11,9 @@ pub struct VersionFile { pub size: u64, } -pub trait MinimumFileObject: AsyncRead + Send {} -impl MinimumFileObject for T {} +pub trait MinimumFileObject: AsyncRead + Send + Unpin {} +impl MinimumFileObject for T {} -// Intentionally not a generic, because of types in read_file -pub struct ReadToAsyncRead<'a> { - pub inner: Box, -} - -const ASYNC_READ_BUFFER_SIZE: usize = 8128; - -impl<'a> AsyncRead for ReadToAsyncRead<'a> { - fn poll_read( - mut self: std::pin::Pin<&mut Self>, - _cx: &mut std::task::Context<'_>, - buf: &mut tokio::io::ReadBuf<'_>, - ) -> std::task::Poll> { - let mut read_buf = [0u8; ASYNC_READ_BUFFER_SIZE]; - let read_size = ASYNC_READ_BUFFER_SIZE.min(buf.remaining()); - match self.inner.read(&mut read_buf[0..read_size]) { - Ok(read) => { - buf.put_slice(&read_buf[0..read]); - std::task::Poll::Ready(Ok(())) - } - Err(err) => std::task::Poll::Ready(Err(err)), - } - } -} #[async_trait] pub trait VersionBackend: DynClone {