tokio-fs-ext 0.4.0

Extend tokio fs to be compatible with native and wasm
Documentation
use std::{io, path::PathBuf};

use super::{
    Metadata, ReadDir, create_dir, create_dir_all, metadata, read, read_dir, remove_dir,
    remove_dir_all, remove_file, write,
};

mod client;
mod server;
mod task;

pub use self::{client::Client, server::Server, task::FsTask};

pub fn offload() -> (Server, Client) {
    Server::new_pair()
}

#[allow(async_fn_in_trait)]
pub trait FsOffload {
    async fn read(&self, path: PathBuf) -> io::Result<Vec<u8>> {
        read(path).await
    }
    async fn write(&self, path: PathBuf, content: Vec<u8>) -> io::Result<()> {
        write(path, content).await
    }
    async fn read_dir(&self, path: PathBuf) -> io::Result<ReadDir> {
        read_dir(path).await
    }
    async fn create_dir(&self, path: PathBuf) -> io::Result<()> {
        create_dir(path).await
    }
    async fn create_dir_all(&self, path: PathBuf) -> io::Result<()> {
        create_dir_all(path).await
    }
    async fn remove_file(&self, path: PathBuf) -> io::Result<()> {
        remove_file(path).await
    }
    async fn remove_dir(&self, path: PathBuf) -> io::Result<()> {
        remove_dir(path).await
    }
    async fn remove_dir_all(&self, path: PathBuf) -> io::Result<()> {
        remove_dir_all(path).await
    }
    async fn metadata(&self, path: PathBuf) -> io::Result<Metadata> {
        metadata(path).await
    }
}

pub struct FsOffloadDefault;

impl FsOffload for FsOffloadDefault {}