5个版本 (2个稳定版)
2.0.0 | 2023年12月22日 |
---|---|
1.0.0 | 2023年3月16日 |
0.2.0 | 2020年11月4日 |
0.1.1 | 2020年11月4日 |
0.1.0 | 2020年11月4日 |
#452 在 解析器实现
每月6,120次下载
99KB
2.5K SLoC
influxdb_line_protocol
这个crate包含纯Rust实现的
-
解析器,用于InfluxDB 行协议,作为InfluxDB IOx项目的一部分开发。此实现旨在与Go实现兼容,但是,此实现使用基于nom组合器的解析器,而不是尝试移植命令式Go逻辑,因此可能存在一些细微的差异。
-
构建器用于构建有效的InfluxDB 行协议
示例
以下是如何将以下行协议数据解析为ParsedLine
的示例
cpu,host=A,region=west usage_system=64.2 1590488773254420000
use influxdb_line_protocol::{ParsedLine, FieldValue};
let mut parsed_lines =
influxdb_line_protocol::parse_lines(
"cpu,host=A,region=west usage_system=64i 1590488773254420000"
);
let parsed_line = parsed_lines
.next()
.expect("Should have at least one line")
.expect("Should parse successfully");
let ParsedLine {
series,
field_set,
timestamp,
} = parsed_line;
assert_eq!(series.measurement, "cpu");
let tags = series.tag_set.unwrap();
assert_eq!(tags[0].0, "host");
assert_eq!(tags[0].1, "A");
assert_eq!(tags[1].0, "region");
assert_eq!(tags[1].1, "west");
let field = &field_set[0];
assert_eq!(field.0, "usage_system");
assert_eq!(field.1, FieldValue::I64(64));
assert_eq!(timestamp, Some(1590488773254420000));
依赖项
~3MB
~63K SLoC