6 个版本 (破坏性)
使用旧的 Rust 2015
0.5.0 | 2019年11月4日 |
---|---|
0.4.0 | 2016年1月11日 |
0.3.0 | 2016年1月11日 |
0.2.1 | 2016年1月11日 |
0.1.0 | 2016年1月10日 |
#187 in #interactive
950 每月下载量
用于 18 个crate(直接使用 3 个)
21KB
338 行
Spinner,一个创建交互式终端应用程序的简单库
文档
要使用Spinner,只需将其添加到您的 Cargo.toml
[dependencies.spinner]
version = "0.3"
使用方法
Spinner有两个部分:一个是旋转器本身,另一个是构建菜单的简单接口。
旋转器
要使用旋转器,只需创建一个使用SpinnerBuilder即可
use spinner::SpinnerBuilder;
let sp = SpinnerBuilder::new("Long Running operation, please wait...".into()).start();
将通知用户您的应用程序目前正在执行后台处理。 sp
是一个 SpinnerHandle
,您可以通过它通知用户您已经完成了多少过程,或者也许是在过程中传递的消息。
use spinner::SpinnerBuilder;
let sp = SpinnerBuilder::new("Long Running operation, please wait...".into()).start();
sp.message("Updating...".into());
sp.update(format!("Finished {} out of {}.", i, max));
自定义
旋转器可以通过三种方式自定义:
step
持续时间,即消息的“刷新”周期。format
,如何打印给定的字符串,由于限制,这是通过闭包完成的,但它还允许比仅格式化字符串更多的特殊格式化。- 旋转器本身,即每次步骤更改的字符列表。
菜单
菜单是请求用户信息的简单、类型检查的方式。
一个简单的菜单可能看起来像这样
use spinner::menu::*;
let m = Menu::new(vec![
MenuOption("First Name".into(), MenuType::Text, MenuOptional::Optional, None),
MenuOption("Last Name".into(), MenuType::Text, MenuOptional::Required, None),
MenuOption("Age".into(), MenuType::Integer, MenuOptional::Optional, Some(MenuValue::Integer(1))),
MenuOption("How much Ketchup?".into(), MenuType::Float, MenuOptional::Optional, None),
]);
let results = m.display();
在结果中,将是一个 MenuValue
数组,然后可以通过 get_{string,int,float}
来检索,在错误类型上调用这些将 panic!。因此,请务必从正确的菜单问题中取出正确的值。所以小心。
菜单选项
MenuOption 是一种新型。它由一个字符串组成,该字符串将构成向用户展示的问题。然后是一个 MenuType,告诉检查器期望什么输入。如果您需要其他内容,请使用 MenuType::Text
并使用它。您还必须说明该输入是否为可选的。(true=可选,false=非可选)。最后,一个 Option<MenuValue>
,允许您放入 None
(表示无默认值)或 Some<MenuValue>
(如果用户未输入任何内容,将使用此值)。
依赖项
~245–720KB
~11K SLoC