pub trait FileExt {
Show 16 methods
// Required methods
fn read_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64
) -> Result<usize>;
fn write_vectored_at(
&self,
bufs: &[IoSlice<'_>],
offset: u64
) -> Result<usize>;
fn tell(&self) -> Result<u64>;
fn fdstat_set_flags(&self, flags: u16) -> Result<()>;
fn fdstat_set_rights(&self, rights: u64, inheriting: u64) -> Result<()>;
fn advise(&self, offset: u64, len: u64, advice: u8) -> Result<()>;
fn allocate(&self, offset: u64, len: u64) -> Result<()>;
fn create_directory<P: AsRef<Path>>(&self, dir: P) -> Result<()>;
fn read_link<P: AsRef<Path>>(&self, path: P) -> Result<PathBuf>;
fn metadata_at<P: AsRef<Path>>(
&self,
lookup_flags: u32,
path: P
) -> Result<Metadata>;
fn remove_file<P: AsRef<Path>>(&self, path: P) -> Result<()>;
fn remove_directory<P: AsRef<Path>>(&self, path: P) -> Result<()>;
// Provided methods
fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize> { ... }
fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()> { ... }
fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize> { ... }
fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()> { ... }
}
wasi_ext
#71213)Expand description
特定于 WASI 的 File
的扩展。
Required Methods§
sourcefn read_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64
) -> Result<usize>
fn read_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64 ) -> Result<usize>
wasi_ext
#71213)从给定的偏移量开始读取多个字节。
返回读取的字节数。
偏移量相对于文件的开始,因此独立于当前游标。
当前文件游标不受此函数影响。
请注意,类似于 File::read_vectored
,短读返回不会出错。
sourcefn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>
fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>
wasi_ext
#71213)从给定的偏移量开始写入多个字节。
返回写入的字节数。
偏移量相对于文件的开始,因此独立于当前游标。
当前文件游标不受此函数影响。
当写入超出文件末尾时,文件被适当扩展并且中间字节被初始化为值 0.
请注意,与 File::write_vectored
相似,返回短写也不是错误。
sourcefn tell(&self) -> Result<u64>
fn tell(&self) -> Result<u64>
wasi_ext
#71213)返回文件中的当前位置。
这对应于 fd_tell
syscall,并且类似于 seek
,其中您从当前位置偏移了 0 个字节。
sourcefn fdstat_set_flags(&self, flags: u16) -> Result<()>
fn fdstat_set_flags(&self, flags: u16) -> Result<()>
wasi_ext
#71213)调整与此文件关联的标志。
这对应于 fd_fdstat_set_flags
syscall。
sourcefn fdstat_set_rights(&self, rights: u64, inheriting: u64) -> Result<()>
fn fdstat_set_rights(&self, rights: u64, inheriting: u64) -> Result<()>
wasi_ext
#71213)调整与此文件关联的权限。
这对应于 fd_fdstat_set_rights
syscall。
sourcefn advise(&self, offset: u64, len: u64, advice: u8) -> Result<()>
fn advise(&self, offset: u64, len: u64, advice: u8) -> Result<()>
wasi_ext
#71213)提供有关文件描述符的文件咨询信息。
这对应于 fd_advise
syscall。
sourcefn allocate(&self, offset: u64, len: u64) -> Result<()>
fn allocate(&self, offset: u64, len: u64) -> Result<()>
wasi_ext
#71213)强制在文件中分配空间。
这对应于 fd_allocate
syscall。
sourcefn create_directory<P: AsRef<Path>>(&self, dir: P) -> Result<()>
fn create_directory<P: AsRef<Path>>(&self, dir: P) -> Result<()>
wasi_ext
#71213)创建一个目录。
这对应于 path_create_directory
syscall。
sourcefn read_link<P: AsRef<Path>>(&self, path: P) -> Result<PathBuf>
fn read_link<P: AsRef<Path>>(&self, path: P) -> Result<PathBuf>
wasi_ext
#71213)读取符号链接的内容。
这对应于 path_readlink
syscall。
sourcefn metadata_at<P: AsRef<Path>>(
&self,
lookup_flags: u32,
path: P
) -> Result<Metadata>
fn metadata_at<P: AsRef<Path>>( &self, lookup_flags: u32, path: P ) -> Result<Metadata>
wasi_ext
#71213)返回文件或目录的属性。
这对应于 path_filestat_get
syscall。
Provided Methods§
sourcefn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize>
fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize>
wasi_ext
#71213)1.33.0 · sourcefn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>
fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>
从给定的偏移量读取填充 buf
所需的确切字节数。
偏移量相对于文件的开始,因此独立于当前游标。
当前文件游标不受此函数影响。
与 Read::read_exact
相似,但使用 read_at
代替 read
。
Errors
如果此函数遇到 io::ErrorKind::Interrupted
类型的错误,则该错误将被忽略,并且操作将继续。
如果此函数在完全填充缓冲区之前遇到 “end of file”,它将返回 io::ErrorKind::UnexpectedEof
类型的错误。
在这种情况下,buf
的内容未指定。
如果遇到任何其他读取错误,则此函数立即返回。在这种情况下,buf
的内容未指定。
如果此函数返回错误,则无法确定已读取多少字节,但读取的字节数永远不会超过完全填充缓冲区所需的字节数。
sourcefn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>
fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>
wasi_ext
#71213)从给定的偏移量开始写入多个字节。
返回写入的字节数。
偏移量相对于文件的开始,因此独立于当前游标。
当前文件游标不受此函数影响。
当写入超出文件末尾时,文件被适当扩展并且中间字节被初始化为值 0.
请注意,与 File::write
相似,返回短写也不是错误。
1.33.0 · sourcefn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>
fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>
尝试从给定的偏移量开始写入整个缓冲区。
偏移量相对于文件的开始,因此独立于当前游标。
当前文件游标不受此函数影响。
此方法将不断地调用 write_at
,直到没有更多数据要写入或返回非 io::ErrorKind::Interrupted
类型的错误为止。
在成功写入整个缓冲区或发生此类错误之前,此方法将不会返回。
将返回第一个不是由该方法生成的 io::ErrorKind::Interrupted
类型的错误。
Errors
该函数将返回 write_at
返回的第一个非 io::ErrorKind::Interrupted
类型的错误。