pub struct NativeRt { /* private fields */ }
Available on crate feature
native
only.Expand description
Native OS backed runtime
Examples
Read a file:
use mfio::io::*;
use mfio::stdeq::*;
use mfio_rt::*;
use std::fs::write;
use std::path::Path;
let test_string = "Test test 42";
let mut filepath = std::env::temp_dir();
filepath.push("mfio-fs-test-read");
// Create a test file:
write(&filepath, test_string.as_bytes())?;
// Create mfio's filesystem
NativeRt::default()
.run(|fs| async move {
let fh = fs.open(&filepath, OpenOptions::new().read(true)).await?;
let mut output = vec![];
fh.read_to_end(&mut output).await?;
assert_eq!(test_string.len(), fh.get_pos() as usize);
assert_eq!(test_string.as_bytes(), output);
mfio::error::Result::Ok(())
})
.unwrap();
Write a file:
use mfio::io::*;
use mfio::stdeq::*;
use mfio_rt::*;
use std::io::Seek;
use std::path::Path;
let mut test_data = vec![];
for i in 0u8..128 {
test_data.extend(i.to_ne_bytes());
}
let mut filepath = std::env::temp_dir();
filepath.push("mfio-fs-test-write");
// Create mfio's filesystem
NativeRt::default()
.run(|fs| async move {
let mut fh = fs
.open(
&filepath,
OpenOptions::new()
.read(true)
.write(true)
.create(true)
.truncate(true),
)
.await?;
fh.write(&test_data).await?;
assert_eq!(test_data.len(), fh.get_pos() as usize);
fh.rewind();
// Read the data back out
let mut output = vec![];
fh.read_to_end(&mut output).await?;
assert_eq!(test_data.len(), fh.get_pos() as usize);
assert_eq!(test_data, output);
mfio::error::Result::Ok(())
})
.unwrap();
Implementations§
source§impl NativeRt
impl NativeRt
pub fn builder() -> NativeRtBuilder
pub fn instance(&self) -> &BaseArc<NativeRtInstance>
pub fn run<'a, Func: FnOnce(&'a NativeRt) -> F, F: Future>( &'a mut self, func: Func ) -> F::Output
sourcepub fn register_stream(&self, stream: TcpStream) -> NativeTcpStream
pub fn register_stream(&self, stream: TcpStream) -> NativeTcpStream
Registers a non-seekable I/O stream
pub fn cancel_all_ops(&self)
pub fn set_cwd(&mut self, dir: PathBuf)
Trait Implementations§
source§impl From<NativeRtInstance> for NativeRt
impl From<NativeRtInstance> for NativeRt
source§fn from(instance: NativeRtInstance) -> Self
fn from(instance: NativeRtInstance) -> Self
Converts to this type from the input type.
source§impl Fs for NativeRt
impl Fs for NativeRt
type DirHandle<'a> = NativeRtDir
source§fn current_dir(&self) -> &Self::DirHandle<'_>
fn current_dir(&self) -> &Self::DirHandle<'_>
Gets a directory handle representing current working directory. Read more
fn open<'a>( &'a self, path: &'a Path, options: OpenOptions ) -> <Self::DirHandle<'a> as DirHandle>::OpenFileFuture<'a>
source§impl IoBackend for NativeRt
impl IoBackend for NativeRt
type Backend = <NativeRtInstance as IoBackend>::Backend
source§fn polling_handle(&self) -> Option<PollingHandle<'_>>
fn polling_handle(&self) -> Option<PollingHandle<'_>>
Gets handle to the backing event system. Read more
source§fn get_backend(&self) -> BackendHandle<'_, Self::Backend>
fn get_backend(&self) -> BackendHandle<'_, Self::Backend>
Acquires exclusive handle to IO backend. Read more
source§impl Tcp for NativeRt
impl Tcp for NativeRt
§type StreamHandle = <NativeRtInstance as Tcp>::StreamHandle
type StreamHandle = <NativeRtInstance as Tcp>::StreamHandle
Available on crate feature
std
only.§type ListenerHandle = <NativeRtInstance as Tcp>::ListenerHandle
type ListenerHandle = <NativeRtInstance as Tcp>::ListenerHandle
Available on crate feature
std
only.§type ConnectFuture<'a, A: ToSocketAddrs + Send + 'a> = <NativeRtInstance as Tcp>::ConnectFuture<'a, A>
type ConnectFuture<'a, A: ToSocketAddrs + Send + 'a> = <NativeRtInstance as Tcp>::ConnectFuture<'a, A>
Available on crate feature
std
only.§type BindFuture<'a, A: ToSocketAddrs + Send + 'a> = <NativeRtInstance as Tcp>::BindFuture<'a, A>
type BindFuture<'a, A: ToSocketAddrs + Send + 'a> = <NativeRtInstance as Tcp>::BindFuture<'a, A>
Available on crate feature
std
only.source§fn connect<'a, A: ToSocketAddrs + Send + 'a>(
&'a self,
addrs: A
) -> Self::ConnectFuture<'a, A>
fn connect<'a, A: ToSocketAddrs + Send + 'a>( &'a self, addrs: A ) -> Self::ConnectFuture<'a, A>
Available on crate feature
std
only.source§fn bind<'a, A: ToSocketAddrs + Send + 'a>(
&'a self,
addrs: A
) -> Self::BindFuture<'a, A>
fn bind<'a, A: ToSocketAddrs + Send + 'a>( &'a self, addrs: A ) -> Self::BindFuture<'a, A>
Available on crate feature
std
only.Auto Trait Implementations§
impl !RefUnwindSafe for NativeRt
impl Send for NativeRt
impl Sync for NativeRt
impl Unpin for NativeRt
impl !UnwindSafe for NativeRt
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> 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, Handle> IoBackendExt<Handle> for T
impl<T, Handle> IoBackendExt<Handle> for T
source§fn with_backend<F>(
&self,
future: F
) -> (WithBackend<'_, Self::Backend, F>, Option<PollingHandle<'_>>)where
F: Future,
fn with_backend<F>(
&self,
future: F
) -> (WithBackend<'_, Self::Backend, F>, Option<PollingHandle<'_>>)where
F: Future,
Builds a composite future that also polls the backend future. Read more