influxdb-line-protocol 2.0.0

InfluxDB line protocol parser and builder.
Documentation
# influxdb_line_protocol

<!-- cargo-rdme start -->

This crate contains pure Rust implementations of

1. A [parser]https://docs.rs/influxdb-line-protocol/latest/influxdb_line_protocol/fn.parse_lines.html for [InfluxDB Line Protocol] developed as part of the
[InfluxDB IOx] project.  This implementation is intended to be
compatible with the [Go implementation], however, this
implementation uses a [nom] combinator-based parser rather than
attempting to port the imperative Go logic so there are likely
some small differences.

2. A [builder]https://docs.rs/influxdb-line-protocol/latest/influxdb_line_protocol/builder/struct.LineProtocolBuilder.html to construct valid [InfluxDB Line Protocol]

## Example

Here is an example of how to parse the following line
protocol data into a `ParsedLine`:

```text
cpu,host=A,region=west usage_system=64.2 1590488773254420000
```

```rust
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));
```

[InfluxDB Line Protocol]: https://v2.docs.influxdata.com/v2.0/reference/syntax/line-protocol
[Go implementation]: https://github.com/influxdata/influxdb/blob/217eddc87e14a79b01d0c22994fc139f530094a2/models/points_parser.go
[InfluxDB IOx]: https://github.com/influxdata/influxdb_iox
[nom]: https://crates.io/crates/nom

<!-- cargo-rdme end -->