nt_native 0.1.2

Windows Native subsystem bindings for the Rust programming language.
Documentation
use crate::Result;

pub trait Read {
    fn read(&self, buffer: &mut [u8]) -> Result<usize>;
}

pub trait ReadAt {
    fn read_at(&self, offset: u64, buffer: &mut [u8]) -> Result<usize>;
}

pub trait Flush {
    fn flush(&self) -> Result<()>;
}

pub trait Size {
    fn size(&self) -> Result<u64>;
}

pub trait Write: Flush {
    fn write(&self, data: &[u8]) -> Result<usize>;
}

pub trait WriteAt: Flush {
    fn write_at(&self, offset: u64, data: &[u8]) -> Result<usize>;
}

pub enum SeekFrom {
    Start(u64),
    End(i64),
    Current(i64),
}

impl From<u64> for SeekFrom {
    fn from(value: u64) -> Self {
        SeekFrom::Start(value)
    }
}

pub trait Seek {
    fn seek(&self, to: SeekFrom) -> Result<u64>;
    fn stream_position(&self) -> Result<u64>;
    fn stream_len(&self) -> Result<u64>;
}