1 个不稳定版本
0.1.1 | 2023年7月18日 |
---|---|
0.1.0 |
|
#1366 在 编码
在 k8sfwd 中使用
24KB
392 行
只是一个标签。
这个crate包含了一个Tag
类型,这是一个与RFC 1035 DNS标签兼容的字符串,具有FromStr
解析和可选的serde支持。
标签示例
use justatag::Tag;
fn tags() {
assert_eq!(Tag::new("some-tag"), "some-tag");
assert_eq!(Tag::from_str("some-tag").unwrap(), "some-tag");
assert!(Tag::from_str("invalid-").is_err());
}
标签的联合
这个名字与crate的名称不完全相符,它还提供了TagUnion
类型,它表示(不出所料,这次)标签的联合。
use std::collections::HashSet;
use justatag::{MatchesAnyTagUnion, Tag, TagUnion};
fn tag_unions() {
let union = TagUnion::from_str("foo").unwrap();
assert!(union.contains(&Tag::new("foo")));
assert_eq!(union.len(), 1);
let union = TagUnion::from_str("foo+bar").unwrap();
assert!(union.contains(&Tag::new("foo")));
assert!(union.contains(&Tag::new("bar")));
assert_eq!(union.len(), 2);
// TagUnions are particularly interesting when bundled up.
let unions = vec![
TagUnion::from_str("bar+baz").unwrap(),
TagUnion::from_str("foo").unwrap()
];
// foo matches
let set_1 = HashSet::from_iter([Tag::new("foo"), Tag::new("bar")]);
assert!(unions.matches_set(&set_1));
// bar+baz matches
let set_2 = HashSet::from_iter([Tag::new("fubar"), Tag::new("bar"), Tag::new("baz")]);
assert!(unions.matches_set(&set_2));
// none match
let set_3 = HashSet::from_iter([Tag::new("fubar"), Tag::new("bar")]);
assert!(!unions.matches_set(&set_3));
}
依赖
~175KB