pub struct ProgressWriter<W: Write, C: FnMut(usize)> { /* private fields */ }
Expand description
Callback-based progress-monitoring writer.
Implementations§
Source§impl<W: Write, C: FnMut(usize)> ProgressWriter<W, C>
impl<W: Write, C: FnMut(usize)> ProgressWriter<W, C>
Sourcepub fn new(writer: W, callback: C) -> Self
pub fn new(writer: W, callback: C) -> Self
Examples found in repository?
examples/writer.rs (lines 9-12)
6fn main() {
7 let mut total = 0;
8 let mut file = sink();
9 let mut writer = ProgressWriter::new(&mut file, |progress: usize| {
10 total += progress;
11 println!("Written {} Kib", total / 1024);
12 });
13
14
15 let buffer = [0u8; 8192];
16 for _ in 0..100_000 {
17 writer.write(&buffer).unwrap();
18 }
19}
More examples
examples/threaded_writer.rs (lines 13-15)
10fn main() {
11 let total = Arc::new(AtomicUsize::new(0));
12 let mut file = Cursor::new(Vec::new());
13 let mut writer = ProgressWriter::new(&mut file, |progress: usize| {
14 total.fetch_add(progress, Ordering::SeqCst);
15 });
16
17 {
18 let total = total.clone();
19 thread::spawn(move || {
20 loop {
21 println!("Written {} Kib", total.load(Ordering::SeqCst) / 1024);
22 thread::sleep(Duration::from_millis(16));
23 }
24 });
25 }
26
27 let buffer = [0u8; 8192];
28 while total.load(Ordering::SeqCst) < 1000 * 1024 * 1024 {
29 writer.write(&buffer).unwrap();
30 }
31}
pub fn into_inner(self) -> W
Trait Implementations§
Source§impl<W: Write, C: FnMut(usize)> Write for ProgressWriter<W, C>
impl<W: Write, C: FnMut(usize)> Write for ProgressWriter<W, C>
Source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Writes a buffer into this writer, returning how many bytes were written. Read more
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flushes this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations§
impl<W, C> Freeze for ProgressWriter<W, C>
impl<W, C> RefUnwindSafe for ProgressWriter<W, C>where
W: RefUnwindSafe,
C: RefUnwindSafe,
impl<W, C> Send for ProgressWriter<W, C>
impl<W, C> Sync for ProgressWriter<W, C>
impl<W, C> Unpin for ProgressWriter<W, C>
impl<W, C> UnwindSafe for ProgressWriter<W, C>where
W: UnwindSafe,
C: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more