pub trait VirtualFile: Debug + AsyncRead + AsyncWrite + AsyncSeek + Unpin + Upcastable + Send {
    // Required methods
    fn last_accessed(&self) -> u64;
    fn last_modified(&self) -> u64;
    fn created_time(&self) -> u64;
    fn size(&self) -> u64;
    fn set_len(&mut self, new_size: u64) -> Result<()>;
    fn unlink(&mut self) -> BoxFuture<'static, Result<()>>;
    fn poll_read_ready(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>
    ) -> Poll<Result<usize>>;
    fn poll_write_ready(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>
    ) -> Poll<Result<usize>>;

    // Provided methods
    fn is_open(&self) -> bool { ... }
    fn get_special_fd(&self) -> Option<u32> { ... }
    fn copy_reference(
        &mut self,
        src: Box<dyn VirtualFile + Send + Sync + 'static>
    ) -> BoxFuture<'_, Result<()>> { ... }
}
Expand description

This trait relies on your file closing when it goes out of scope via Drop

Required Methods§

source

fn last_accessed(&self) -> u64

the last time the file was accessed in nanoseconds as a UNIX timestamp

source

fn last_modified(&self) -> u64

the last time the file was modified in nanoseconds as a UNIX timestamp

source

fn created_time(&self) -> u64

the time at which the file was created in nanoseconds as a UNIX timestamp

source

fn size(&self) -> u64

the size of the file in bytes

source

fn set_len(&mut self, new_size: u64) -> Result<()>

Change the size of the file, if the new_size is greater than the current size the extra bytes will be allocated and zeroed

Request deletion of the file

source

fn poll_read_ready( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<Result<usize>>

Polls the file for when there is data to be read

source

fn poll_write_ready( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<Result<usize>>

Polls the file for when it is available for writing

Provided Methods§

source

fn is_open(&self) -> bool

Indicates if the file is opened or closed. This function must not block Defaults to a status of being constantly open

source

fn get_special_fd(&self) -> Option<u32>

Used for “special” files such as stdin, stdout and stderr. Always returns the same file descriptor (0, 1 or 2). Returns None on normal files

source

fn copy_reference( &mut self, src: Box<dyn VirtualFile + Send + Sync + 'static> ) -> BoxFuture<'_, Result<()>>

This method will copy a file from a source to this destination where the default is to do a straight byte copy however file system implementors may optimize this to do a zero copy

Implementors§