本文简要介绍rust语言中 std::io::Write.write_all_vectored
的用法。
用法
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
尝试将多个缓冲区写入此写入器。
此方法将不断调用 write_vectored
,直到没有更多数据要写入或返回非 ErrorKind::Interrupted
类型的错误。在所有缓冲区都已成功写入或发生此类错误之前,此方法不会返回。将返回由该方法生成的第一个不属于 ErrorKind::Interrupted
类型的错误。
如果缓冲区不包含数据,则永远不会调用 write_vectored
。
注意
不像std::io::Write.write_vectored,这需要一个可变的引用切片IoSlice
s,不是一成不变的。这是因为我们需要修改切片以跟踪已写入的字节。
此函数返回后,bufs
的内容未指定,因为这取决于需要多少次调用 write_vectored
。最好将此函数理解为拥有bufs
的所有权,之后不要使用bufs
。 IoSlice
s 指向的底层缓冲区(但不是 IoSlice
s 本身)不变并且可以重复使用。
例子
#![feature(write_all_vectored)]
use std::io::{Write, IoSlice};
let mut writer = Vec::new();
let bufs = &mut [
IoSlice::new(&[1]),
IoSlice::new(&[2, 3]),
IoSlice::new(&[4, 5, 6]),
];
writer.write_all_vectored(bufs)?;
// Note: the contents of `bufs` is now undefined, see the Notes section.
assert_eq!(writer, &[1, 2, 3, 4, 5, 6]);
相关用法
- Rust Write.write_all用法及代码示例
- Rust Write.write_str用法及代码示例
- Rust Write.write_vectored用法及代码示例
- Rust Write.write_char用法及代码示例
- Rust Write.write_fmt用法及代码示例
- Rust Write.write用法及代码示例
- Rust Write.by_ref用法及代码示例
- Rust Write.flush用法及代码示例
- Rust Write用法及代码示例
- Rust WriterPanicked用法及代码示例
- Rust Wrapping.is_negative用法及代码示例
- Rust Wrapping.from_le用法及代码示例
- Rust Wrapping.reverse_bits用法及代码示例
- Rust Wrapping.to_be用法及代码示例
- Rust Wrapping.next_power_of_two用法及代码示例
- Rust Wrapping.is_power_of_two用法及代码示例
- Rust Wrapping.abs用法及代码示例
- Rust Wrapping.rotate_right用法及代码示例
- Rust Wrapping.leading_zeros用法及代码示例
- Rust Wrapping.signum用法及代码示例
- Rust Wrapping.trailing_zeros用法及代码示例
- Rust Wrapping.from_be用法及代码示例
- Rust Wrapping.to_le用法及代码示例
- Rust Wrapping.count_zeros用法及代码示例
- Rust Wrapping.swap_bytes用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::io::Write.write_all_vectored。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。