2 个版本
0.1.4 | 2023 年 2 月 9 日 |
---|---|
0.1.3 |
|
0.1.2 |
|
0.1.1 | 2023 年 2 月 8 日 |
0.1.0 |
|
#16 in #allowing
每月 37 次下载
23KB
473 行
多窗口输出
多窗口输出允许你在同一个终端屏幕上拥有多个输出屏幕。每次 Screen
更新时,Screen
会清空其缓冲区并使用 Screen
的内容更新终端屏幕。
Screen
使用 Screen::new()
启动一个新的 Screen
。你可以使用 set_name
方法设置屏幕的名称。你也可以使用 set_window_name
方法设置窗口的名称。屏幕的名称将显示在终端的顶部。每个窗口的名称将显示在其底部。默认窗口的 id
为 0
。
let mut screen = Screen::new();
你可以将窗口分割成多个窗口。调用 append_left_child(id)
或 append_down_child(id)
方法可以垂直或水平分割具有 id
的窗口。
let new_window_id = screen.append_left_child(0).unwrap();
let other_new_window_id = screen.append_down_child(0).unwrap();
let last_window_id = screen.append_left_child(new_window_id).unwrap();
要将内容放置到屏幕上,你可以使用 Screen::println(&mut screen, id, line)
,Screen::print(&mut screen, id, line)
,和 Screen::flush(&mut screen, id)
。
// This will print a new line with "New Line" in the window with id new_window_id and refresh the screen.
screen.println(new_window, "New Line").unwrap();
// This will print a line with "Line" in the window with id new_window_id; however, it will not start a new line nor refresh the screen.
screen.print(new_window, "Line").unwrap();
// This will flush the current line and refresh the screen.
screen.flush(new_window).unwrap();
桥接
Bridge
允许你从不同的位置调用 Screen
的内容函数。这在从不同的线程打印内容时特别有用。使用桥接的唯一缺点是,你不能向传递给 Bridge::new(&screen)
的 Screen
添加新的子窗口。
创建桥接。
let bridge = Bridge::new(screen);
要从多个位置访问桥接器,请使用 Bridge::clone(&bridge)
函数。
let other_bridge = Bridge::clone(&bridge);
要将内容放入您用于创建 Bridge
的 Screen
,请使用 Bridge::println(...)
、Bridge::print(...)
和 Bridge::flush(...)
。这些函数与它的 Screen
对应函数工作方式相似。
// Notice how you can call the println function from different variables
bridge.println(new_window, "New Line").unwrap();
other_bridge.println(new_window, "New New Line").unwrap();
理想情况下,当您完成屏幕的使用后,运行 bridge.kill()
来结束屏幕过程。
依赖项
~175KB