Function create_printing_process

Source
pub fn create_printing_process<'a, const N: usize>(
    messages: [&str; N],
    sleep: f64,
    last: u64,
) -> Child
Expand description

Create a process that prints messages and sleeps.

Examples found in repository?
examples/fast_output.rs (line 11)
6fn main() {
7    tprintln!("Starting...");
8
9    std::thread::sleep(std::time::Duration::from_secs(2));
10
11    let process_foo = create_printing_process(["   helloooohelloooohelloooohelloooohelloooohelloooohelloooohelloooohelloooo", "world", "foo", "bar"], 0.2, 50);
12
13    // Add the process to the terminal.
14    // The first time `add_process` or `tprintln!` is called, the terminal is automatically initialized.
15    add_process(
16        "Foo",
17        process_foo,
18        ProcessSettings::new_with_scroll(
19            // Show only the output messages.
20            MessageSettings::Output,
21            // Enable scrolling with the Left and Right keys.
22            // Up and Down keys are reserved for `Main` output.
23            ScrollSettings::enable(KeyCode::Left, KeyCode::Right),
24        ),
25    )
26    .unwrap();
27
28    loop {
29        std::thread::sleep(std::time::Duration::from_secs(1));
30    }
31}
More examples
Hide additional examples
examples/processes.rs (line 11)
9fn main() {
10    // Create a process that prints messages and sleeps.
11    let process_foo = create_printing_process(["hello", "world", "foo", "bar"], 1.0, 30);
12
13    // Add the process to the terminal.
14    // The first time `add_process` or `tprintln!` is called, the terminal is automatically initialized.
15    add_process(
16        "Foo",
17        process_foo,
18        ProcessSettings::new_with_scroll(
19            // Show only the output messages.
20            MessageSettings::Output,
21            // Enable scrolling with the Left and Right keys.
22            // Up and Down keys are reserved for `Main` output.
23            ScrollSettings::enable(KeyCode::Left, KeyCode::Right),
24        ),
25    )
26    .unwrap();
27
28    sleep(Duration::from_secs(2));
29
30    // Create another process
31    let process_bar = create_printing_process(
32        ["hello", "Err: this is an error! >&2", "foo", "bar"],
33        0.1,
34        8,
35    );
36
37    add_process(
38        "Bar",
39        process_bar,
40        // Show both output and error messages.
41        ProcessSettings::new(MessageSettings::All),
42    )
43    .unwrap();
44
45    sleep(Duration::from_secs(2));
46
47    // Similar to print! and println!, but it prints messages in the `Main` section of the terminal.
48    // I don't find a way to capture the stdout (like println!) and display them into `Main` section.
49    tprintln!("searching_message");
50    // Block the current thread until the message is found.
51    let msg = block_search_message("Foo", "llo").unwrap();
52    tprintln!("msg found: {}", msg);
53    assert_eq!(msg, "hello");
54
55    tprintln!("searching_message");
56    let msg = block_search_message("Bar", "ar").unwrap();
57    tprintln!("msg found: {}", msg);
58    assert_eq!(msg, "bar");
59
60    sleep(Duration::from_secs(20));
61
62    // Restore the terminal to its original state.
63    end_terminal();
64}