//! This example demonstrates probably the most complicated part of //! `minreq`. Useful when making loading bars, for example.
fn main() -> Result<(), minreq::Error> { letmut buffer = Vec::new(); for byte in minreq::get("http://example.com").send_lazy()? { // The connection could have a problem at any point during the // download, so each byte needs to be unwrapped. let (byte, len) = byte?;
// The `byte` is the current u8 of data we're iterating // through.
print!("{}", byte as char);
// The `len` is the expected amount of incoming bytes // including the current one: this will be the rest of the // body if the server provided a Content-Length header, or // just the size of the remaining chunk in chunked transfers.
buffer.reserve(len);
buffer.push(byte);
// Flush the printed text so each char appears on your // terminal right away.
flush();
// Wait for 50ms so the data doesn't appear instantly fast // internet connections, to demonstrate that the body is being // printed char-by-char.
sleep();
}
Ok(())
}
// Helper functions
fn flush() { use std::io::{stdout, Write};
stdout().lock().flush().ok();
}
fn sleep() { use std::thread::sleep; use std::time::Duration;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.