pub struct Typout { /* private fields */ }
Expand description
Typout represents a wrapper around the standard output of the current process (stdout).
Implementations§
Source§impl Typout
impl Typout
Sourcepub fn with_spinner(spinner: Spinner) -> Self
pub fn with_spinner(spinner: Spinner) -> Self
Creates a new Typout object with a configured spinner instance.
Source§impl Typout
impl Typout
Sourcepub fn set_spinner(&mut self, spinner: Spinner)
pub fn set_spinner(&mut self, spinner: Spinner)
Sets the spinner instance.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}
Sourcepub fn write<D>(&mut self, data: D)
pub fn write<D>(&mut self, data: D)
Appends data to the output buffer.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}
Sourcepub fn flush(&self)
pub fn flush(&self)
Sends buffered output data to the standard output of the current process which displays the data in the terminal. The output buffer is cleared afterwards.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}
Sourcepub fn print<D>(&mut self, data: D)
pub fn print<D>(&mut self, data: D)
Appends data to the output buffer and calls the flush()
method.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}
Sourcepub fn pin<I, D>(&self, id: I, data: D)
pub fn pin<I, D>(&self, id: I, data: D)
Creates a new pinned message or updates an existing one. Pinned messages
always stayed visible at the end of the output stream. An arbitrary
number of pinned messages is allowed. Pins are uniquely identified by
the provided id
parameter.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}
Sourcepub fn spin<I, D>(&mut self, id: I, data: D)
pub fn spin<I, D>(&mut self, id: I, data: D)
Creates a new animated pinned message or updates an existing one. It
spawns the spinner animation thread for each new id
. If the spinner
with the provided id
already exists, then only the message is updated.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}
Sourcepub fn unpin<I>(&mut self, id: I)
pub fn unpin<I>(&mut self, id: I)
Removes a pinned message with the provided id
. This method works for
all pinned messages including animated spinners.
Examples found in repository?
7fn main() {
8 let now = Instant::now();
9
10 let mut spinner = Spinner::default();
11 spinner.set_frames(vec!["|", "/", "-", "\\"]);
12 spinner.set_speed(50);
13 let mut out = Typout::default();
14 out.set_spinner(spinner);
15
16 loop {
17 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
18 out.write("Tick");
19 out.write(&format!(" started {:?} seconds ago\n", now.elapsed().as_secs()));
20 out.flush();
21
22 out.print("Running simulation:\n");
23
24 out.pin("a", "Pin message A\n");
25 std::thread::sleep(Duration::from_secs(1));
26 out.pin("b", "Pin message B\n");
27 std::thread::sleep(Duration::from_secs(1));
28 out.pin("a", "Pin message A (updated)\n");
29 std::thread::sleep(Duration::from_secs(1));
30 out.pin("b", "Pin message B (updated)\n");
31 std::thread::sleep(Duration::from_secs(1));
32 out.unpin("a");
33 std::thread::sleep(Duration::from_secs(1));
34 out.unpin("b");
35
36 std::thread::sleep(Duration::from_secs(1));
37 out.spin("a", "Loading .\n");
38 std::thread::sleep(Duration::from_secs(1));
39 out.spin("b", format!("Progress {:.1}% ..\n", 50));
40 std::thread::sleep(Duration::from_secs(1));
41 out.spin("a", "Loading ..\n");
42 std::thread::sleep(Duration::from_secs(1));
43 out.spin("b", format!("Progress {:.1}% ..\n", 100));
44 std::thread::sleep(Duration::from_secs(1));
45 out.unpin("a");
46 std::thread::sleep(Duration::from_secs(1));
47 out.unpin("b");
48 std::thread::sleep(Duration::from_secs(1));
49 }
50}