3 个版本
0.1.3 | 2019 年 10 月 28 日 |
---|---|
0.1.2 | 2019 年 7 月 21 日 |
0.1.1 | 2019 年 7 月 18 日 |
#3 在 #true
每月 32 次下载
用于 whatfeatures
13KB
161 行
lexical_bool
LexicalBool 提供了一种类似布尔类型的类型,可以从字符串中解析
let tests = &[
// default `true` values
("true", true),
("t", true),
("1", true),
("yes", true),
// default `false` values
("false", false),
("f", false),
("0", false),
("no", false),
];
for &(input, ok) in tests {
let lb : LexicalBool = input.parse().expect("valid input");
// LexicalBool can be "deref" into a bool, or compared directly with one (partialeq)
assert_eq!(lb, ok);
}
使用自己的值
注意 此处使用 TLS,因此更改仅对当前线程有效
// set the true values
assert!(lexical_bool::initialize_true_values(
&[ "foo", "bar" ]
));
// set the false values
assert!(lexical_bool::initialize_false_values(
&[ "baz", "qux" ]
));
// once set, you cannot change them (in this thread)
assert_eq!(lexical_bool::initialize_true_values(
&[ "true", "1" ]
), false);
let tests = &[
// your `true` values
("foo", true),
("bar", true),
// your `false` values
("baz", false),
("qux", false),
];
for &(input, ok) in tests {
// if parse (or from_str) is called before {initialize_true_values, initialize_false_values}
// then it'll default to {lexical_bool::TRUTHY_VALUES, lexical_bool::FALSEY_VALUES}
let lb : LexicalBool = input.parse().expect("valid input");
// LexicalBool can be "deref" into a bool, or compared directly with one (partialeq)
assert_eq!(lb, ok);
}
// ..and invalid bools
use std::str::FromStr as _;
use lexical_bool::Error;
let input = "true";
assert_eq!(
LexicalBool::from_str(input),
Err(Error::InvalidInput(input.to_string()))
);
依赖项
~48KB