Struct std::io::Take1.0.0[][src]

pub struct Take<T> { /* fields omitted */ }
Expand description

Reader 适配器,用于限制从基础 reader 读取的字节。

通常通过在 reader 上调用 take 来创建此结构体。 请参见 take 的文档以获取更多详细信息。

Implementations

返回在此实例返回 EOF 之前可以读取的字节数。

Note

如果基础 Read 实例达到 EOF,则在读取的字节数少于此方法指示的字节数之后,此实例可能到达 EOF

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let f = File::open("foo.txt")?;

    // 最多读取五个字节
    let handle = f.take(5);

    println!("limit: {}", handle.limit());
    Ok(())
}
Run

设置在此实例返回 EOF 之前可以读取的字节数。 这与构造新的 Take 实例相同,因此在调用此方法时,读取的字节数和先前的限制值无关紧要。

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let f = File::open("foo.txt")?;

    // 最多读取五个字节
    let mut handle = f.take(5);
    handle.set_limit(10);

    assert_eq!(handle.limit(), 10);
    Ok(())
}
Run

消耗 Take,返回包装的 reader。

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;

    let mut buffer = [0; 5];
    let mut handle = file.take(5);
    handle.read(&mut buffer)?;

    let file = handle.into_inner();
    Ok(())
}
Run

获取对基础 reader 的引用。

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;

    let mut buffer = [0; 5];
    let mut handle = file.take(5);
    handle.read(&mut buffer)?;

    let file = handle.get_ref();
    Ok(())
}
Run

获取基础 reader 的可变引用。

应注意避免修改基础 reader 的内部 I/O 状态,因为这样做可能会破坏该 Take 的内部限制。

Examples

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;

    let mut buffer = [0; 5];
    let mut handle = file.take(5);
    handle.read(&mut buffer)?;

    let file = handle.get_mut();
    Ok(())
}
Run

Trait Implementations

返回内部缓冲区的内容,如果内部缓冲区为空,则使用内部 reader 中的更多数据填充内部缓冲区。 Read more

告诉此缓冲区 amt 字节已从缓冲区中消耗掉,因此在调用 read 时不再应返回它们。 Read more

🔬 This is a nightly-only experimental API. (buf_read_has_data_left #86423)

recently added

检查底层 Read 是否有任何数据可供读取。 Read more

将所有字节读入 buf,直到到达定界符 byte 或 EOF。 Read more

读取所有字节,直到到达换行符 (0xA 字节),然后将它们附加到提供的缓冲区中。 Read more

返回对该字节 byte 上的 reader 拆分内容的迭代器。 Read more

返回此 reader 的各行上的迭代器。 Read more

使用给定的格式化程序格式化该值。 Read more

从该源中提取一些字节到指定的缓冲区中,返回读取的字节数。 Read more

🔬 This is a nightly-only experimental API. (read_initializer #42788)

确定该 Reader 是否可以与未初始化内存的缓冲区一起使用。 Read more

读取所有字节,直到此源中的 EOF 为止,然后将它们放入 bufRead more

read 相似,不同之处在于它读入缓冲区的一部分。 Read more

🔬 This is a nightly-only experimental API. (can_vector #69941)

确定此 Read 是否具有有效的 read_vectored 实现。 Read more

读取所有字节,直到该源中的 EOF 为止,然后将它们附加到 bufRead more

读取填充 buf 所需的确切字节数。 Read more

为此 Read 实例创建 “by reference” 适配器。 Read more

将此 Read 实例的字节数转换为 IteratorRead more

创建一个适配器,它将将此流与另一个流链接。 Read more

创建一个适配器,该适配器最多可以从中读取 limit 字节。 Read more

Auto Trait Implementations

Blanket Implementations

获取 selfTypeIdRead more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。