有没有一种方法可以获取BufWriter的缓冲区长度?

10

BufWriter有一个私有字段buf,它是不可访问的。我该如何知道当前包含在其中的数据大小?


你为什么想知道缓冲区中的数据量? - Shepmaster
我实际上在清空它时遇到了麻烦,我只是想知道是否有可能检查里面的内容。 - Razakhel
1个回答

7

你无法确认(可以查看源代码来确定)。内部的buf没有以任何方式暴露,可能是为了在不破坏兼容性的情况下允许实现发生变化。


嗯,你可以,但这很糟糕和不正规。你可以使用调试格式化程序打印BufWriter

use std::io::prelude::*;
use std::io::{self, BufWriter};

fn main() {
    let mut b = BufWriter::new(io::sink());
    b.write_all(b"hello, world").expect("Unable to write");
    println!("{:?}", b)
}

BufWriter { writer: Sink { .. }, buffer: 12/8192 }

1
所以,从逻辑上讲,你可以使用format!("{:?}", b)并解析结果... /糟糕的想法 - trent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接