Struct std::io::Cursor 1.0.0[−][src]
pub struct Cursor<T> { /* fields omitted */ }Expand description
Cursor 包装内存中的缓冲区,并为其提供 Seek 实现。
Cursors 与内存缓冲区一起使用,任何实现 AsRef<[u8]>,以允许它们实现 Read 或者 Write,从而允许这些缓冲区在您可能使用进行实际 I/O 的读取器或写入器的任何地方使用。
标准库在通常用作缓冲区的各种类型上实现了一些 I/O traits,例如 Cursor<Vec<u8>> and Cursor<&[u8]>。
Examples
我们可能想在生产代码中将字节写入 File,但在测试中使用内存缓冲区。我们可以做到这一点
Cursor:
use std::io::prelude::*;
use std::io::{self, SeekFrom};
use std::fs::File;
// 我们编写的库函数
fn write_ten_bytes_at_end<W: Write + Seek>(writer: &mut W) -> io::Result<()> {
writer.seek(SeekFrom::End(-10))?;
for i in 0..10 {
writer.write(&[i])?;
}
// 一切顺利
Ok(())
}
// 这是一些使用此库函数的代码。
// 我们可能想在此处使用 BufReader 来提高效率,但让我们继续关注此示例。
let mut file = File::create("foo.txt")?;
write_ten_bytes_at_end(&mut file)?;
// 现在让我们编写一个测试
#[test]
fn test_writes_bytes() {
// 设置一个真实的文件要比内存中的缓冲区慢得多,让我们用游标代替
use std::io::Cursor;
let mut buff = Cursor::new(vec![0; 15]);
write_ten_bytes_at_end(&mut buff).unwrap();
assert_eq!(&buff.get_ref()[5..15], &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
}RunImplementations
返回此游标的当前位置。
Examples
use std::io::Cursor;
use std::io::prelude::*;
use std::io::SeekFrom;
let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]);
assert_eq!(buff.position(), 0);
buff.seek(SeekFrom::Current(2)).unwrap();
assert_eq!(buff.position(), 2);
buff.seek(SeekFrom::Current(-1)).unwrap();
assert_eq!(buff.position(), 1);Runpub fn remaining_slice(&self) -> &[u8]ⓘ
pub fn remaining_slice(&self) -> &[u8]ⓘ
返回剩余的三个。
Examples
#![feature(cursor_remaining)]
use std::io::Cursor;
let mut buff = Cursor::new(vec![1, 2, 3, 4, 5]);
assert_eq!(buff.remaining_slice(), &[1, 2, 3, 4, 5]);
buff.set_position(2);
assert_eq!(buff.remaining_slice(), &[3, 4, 5]);
buff.set_position(4);
assert_eq!(buff.remaining_slice(), &[5]);
buff.set_position(6);
assert_eq!(buff.remaining_slice(), &[]);RunTrait Implementations
与 read 相似,不同之处在于它读入缓冲区的一部分。 Read more
读取所有字节,直到此源中的 EOF 为止,然后将它们放入 buf。 Read more
读取这个源中的所有字节,直到 EOF 为止,然后将它们追加到 buf。 Read more
为这个 Read 实例创建一个 “by reference” 适配器。 Read more
创建一个适配器,将这个流与另一个链接起来。 Read more
将格式化的字符串写入此 writer,返回遇到的任何错误。 Read more
将格式化的字符串写入此 writer,返回遇到的任何错误。 Read more
将格式化的字符串写入此 writer,返回遇到的任何错误。 Read more
将格式化的字符串写入此 writer,返回遇到的任何错误。 Read more