Struct mfio_rt::native::NativeRt

source ·
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

source

pub fn builder() -> NativeRtBuilder

source

pub fn instance(&self) -> &BaseArc<NativeRtInstance>

source

pub fn run<'a, Func: FnOnce(&'a NativeRt) -> F, F: Future>( &'a mut self, func: Func ) -> F::Output

source

pub fn register_stream(&self, stream: TcpStream) -> NativeTcpStream

Registers a non-seekable I/O stream

source

pub fn cancel_all_ops(&self)

source

pub fn set_cwd(&mut self, dir: PathBuf)

Trait Implementations§

source§

impl Debug for NativeRt

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for NativeRt

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<NativeRtInstance> for NativeRt

source§

fn from(instance: NativeRtInstance) -> Self

Converts to this type from the input type.
source§

impl Fs for NativeRt

§

type DirHandle<'a> = NativeRtDir

source§

fn current_dir(&self) -> &Self::DirHandle<'_>

Gets a directory handle representing current working directory. Read more
source§

fn open<'a>( &'a self, path: &'a Path, options: OpenOptions ) -> <Self::DirHandle<'a> as DirHandle>::OpenFileFuture<'a>

source§

impl IoBackend for NativeRt

§

type Backend = <NativeRtInstance as IoBackend>::Backend

source§

fn polling_handle(&self) -> Option<PollingHandle<'_>>

Gets handle to the backing event system. Read more
source§

fn get_backend(&self) -> BackendHandle<'_, Self::Backend>

Acquires exclusive handle to IO backend. Read more
source§

impl Tcp for NativeRt

§

type StreamHandle = <NativeRtInstance as Tcp>::StreamHandle

Available on crate feature std only.
§

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>

Available on crate feature std only.
§

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>

Available on crate feature std only.
source§

fn bind<'a, A: ToSocketAddrs + Send + 'a>( &'a self, addrs: A ) -> Self::BindFuture<'a, A>

Available on crate feature std only.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, F> From2<T> for F
where T: Into<F>,

§

fn from2(other: T) -> F

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, Handle> IoBackendExt<Handle> for T
where T: IoBackend<Handle> + ?Sized, Handle: Pollable,

source§

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
source§

fn block_on<F>(&self, fut: F) -> <F as Future>::Output
where F: Future,

Executes a future to completion. Read more
source§

impl<T> LinksIoBackend for T
where T: IoBackend,

source§

fn get_mut(&self) -> &<T as LinksIoBackend>::Link

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> GenericTypeBounds for T