Skip to content

Commit

Permalink
io: implement Seek for SyncIoBridge (#6058)
Browse files Browse the repository at this point in the history
  • Loading branch information
nitsky authored Oct 7, 2023
1 parent 2bd4376 commit 4557451
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions tokio-util/src/io/sync_bridge.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::io::{BufRead, Read, Write};
use std::io::{BufRead, Read, Seek, Write};
use tokio::io::{
AsyncBufRead, AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt,
AsyncBufRead, AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncSeek, AsyncSeekExt, AsyncWrite,
AsyncWriteExt,
};

/// Use a [`tokio::io::AsyncRead`] synchronously as a [`std::io::Read`] or
Expand Down Expand Up @@ -79,6 +80,13 @@ impl<T: AsyncWrite + Unpin> Write for SyncIoBridge<T> {
}
}

impl<T: AsyncSeek + Unpin> Seek for SyncIoBridge<T> {
fn seek(&mut self, pos: std::io::SeekFrom) -> std::io::Result<u64> {
let src = &mut self.src;
self.rt.block_on(AsyncSeekExt::seek(src, pos))
}
}

// Because https://doc.rust-lang.org/std/io/trait.Write.html#method.is_write_vectored is at the time
// of this writing still unstable, we expose this as part of a standalone method.
impl<T: AsyncWrite> SyncIoBridge<T> {
Expand Down

0 comments on commit 4557451

Please sign in to comment.