Trait std::os::wasi::fs::FileExt

source ·
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<()> { ... }
}
🔬This is a nightly-only experimental API. (wasi_ext #71213)
Available on WASI only.
Expand description

特定于 WASI 的 File 的扩展。

Required Methods§

source

fn read_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64 ) -> Result<usize>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

从给定的偏移量开始读取多个字节。

返回读取的字节数。

偏移量相对于文件的开始,因此独立于当前游标。

当前文件游标不受此函数影响。

请注意,类似于 File::read_vectored,短读返回不会出错。

source

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

从给定的偏移量开始写入多个字节。

返回写入的字节数。

偏移量相对于文件的开始,因此独立于当前游标。

当前文件游标不受此函数影响。

当写入超出文件末尾时,文件被适当扩展并且中间字节被初始化为值 0.

请注意,与 File::write_vectored 相似,返回短写也不是错误。

source

fn tell(&self) -> Result<u64>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

返回文件中的当前位置。

这对应于 fd_tell syscall,并且类似于 seek,其中您从当前位置偏移了 0 个字节。

source

fn fdstat_set_flags(&self, flags: u16) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

调整与此文件关联的标志。

这对应于 fd_fdstat_set_flags syscall。

source

fn fdstat_set_rights(&self, rights: u64, inheriting: u64) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

调整与此文件关联的权限。

这对应于 fd_fdstat_set_rights syscall。

source

fn advise(&self, offset: u64, len: u64, advice: u8) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

提供有关文件描述符的文件咨询信息。

这对应于 fd_advise syscall。

source

fn allocate(&self, offset: u64, len: u64) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

强制在文件中分配空间。

这对应于 fd_allocate syscall。

source

fn create_directory<P: AsRef<Path>>(&self, dir: P) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

创建一个目录。

这对应于 path_create_directory syscall。

🔬This is a nightly-only experimental API. (wasi_ext #71213)

读取符号链接的内容。

这对应于 path_readlink syscall。

source

fn metadata_at<P: AsRef<Path>>( &self, lookup_flags: u32, path: P ) -> Result<Metadata>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

返回文件或目录的属性。

这对应于 path_filestat_get syscall。

source

fn remove_file<P: AsRef<Path>>(&self, path: P) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

取消链接文件。

这对应于 path_unlink_file syscall。

source

fn remove_directory<P: AsRef<Path>>(&self, path: P) -> Result<()>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

删除目录。

这对应于 path_remove_directory syscall。

Provided Methods§

source

fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

从给定的偏移量开始读取多个字节。

返回读取的字节数。

偏移量相对于文件的开始,因此独立于当前游标。

当前文件游标不受此函数影响。

请注意,类似于 File::read,短读返回不会出错。

1.33.0 · source

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 的内容未指定。

如果此函数返回错误,则无法确定已读取多少字节,但读取的字节数永远不会超过完全填充缓冲区所需的字节数。

source

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>

🔬This is a nightly-only experimental API. (wasi_ext #71213)

从给定的偏移量开始写入多个字节。

返回写入的字节数。

偏移量相对于文件的开始,因此独立于当前游标。

当前文件游标不受此函数影响。

当写入超出文件末尾时,文件被适当扩展并且中间字节被初始化为值 0.

请注意,与 File::write 相似,返回短写也不是错误。

1.33.0 · source

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

尝试从给定的偏移量开始写入整个缓冲区。

偏移量相对于文件的开始,因此独立于当前游标。

当前文件游标不受此函数影响。

此方法将不断地调用 write_at,直到没有更多数据要写入或返回非 io::ErrorKind::Interrupted 类型的错误为止。 在成功写入整个缓冲区或发生此类错误之前,此方法将不会返回。 将返回第一个不是由该方法生成的 io::ErrorKind::Interrupted 类型的错误。

Errors

该函数将返回 write_at 返回的第一个非 io::ErrorKind::Interrupted 类型的错误。

Implementors§