有没有办法获得BufWriter的缓冲区长度?

Raz*_*hel 8 rust

A BufWriter有一个buf无法访问的私人领域.我怎么知道当前包含的数据的大小?

She*_*ter 6

你不能(检查来源是否确定).内部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)
}
Run Code Online (Sandbox Code Playgroud)
BufWriter { writer: Sink { .. }, buffer: 12/8192 }
Run Code Online (Sandbox Code Playgroud)