pub enum IoMode {
UringDirect,
Uring,
UringBlocking,
StdBlocking,
TokioIO,
StdSpawnBlocking,
}Expand description
Mode in which Disk IO is done (direct IO or page cache)
Variants§
UringDirect
Uses io_uring and bypass the page cache (uses direct IO), only available on Linux
Uring
Uses io_uring and uses OS’s page cache, only available on Linux
UringBlocking
Uses io_uring on the calling thread and blocks until completion.
StdBlocking
Uses rust’s std::fs::File, this is blocking IO.
On Linux, this is essentially pread/pwrite
This is the default on non-Linux platforms.
TokioIO
Uses tokio’s async IO, this is non-blocking IO, but quite slow: https://github.com/tokio-rs/tokio/issues/3664
StdSpawnBlocking
Use rust’s std::fs::File, but will try to spawn_blocking, just like object_store does:
https://github.com/apache/arrow-rs-object-store/blob/28b2fc563feb44bb3d15718cf58036772334a704/src/local.rs#L440-L448
Trait Implementations§
impl Copy for IoMode
impl StructuralPartialEq for IoMode
Auto Trait Implementations§
impl Freeze for IoMode
impl RefUnwindSafe for IoMode
impl Send for IoMode
impl Sync for IoMode
impl Unpin for IoMode
impl UnwindSafe for IoMode
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request