Skip to main content

Crate line_protocol

Crate line_protocol 

Source
Expand description

§Line Protocol

This crate offers helper types and macros to build line protocol strings.

§Usage

To generate line protocols, your type must implement LineProtocol trait.

You can also implement LineProtocolTag for custom types to be used as tags.

§Automatic Implementation

You can easily derive LineProtocol and LineProtocolTag from the types.

use std::time::SystemTime;
use line_protocol::{LineProtocolTag, LineProtocol};

#[derive(LineProtocolTag)]
#[line_protocol(case = "kebab")]
enum Room {
    Kitchen,
    LivingRoom,
    Bathroom,
}

#[derive(LineProtocol)]
#[line_protocol(measurement = "environment")]
struct EnvironmentMeasurement {
    #[line_protocol(tag)]
    room: Room,
    #[line_protocol(field)]
    temperature: f32,
    #[line_protocol(field)]
    humidity: f32,
    #[line_protocol(timestamp)]
    timestamp: SystemTime,
}

§Manual Implementation

For more complex situations, you may implement the trait using the builder syntax.

use std::time::SystemTime;
use line_protocol::{LineProtocol, LineProtocolTag, LineProtocolBuilder};

struct EnvironmentMeasurement {
    room: String,
    temperature: f32,
    humidity: f32,
    timestamp: SystemTime,
}

impl LineProtocol for EnvironmentMeasurement {
    fn to_line_protocol(&self) -> Option<String> {
        LineProtocolBuilder::default()
            .measurement("environment")
            .tag("room", &self.room)
            .field("temperature", &self.temperature)
            .field("humidity", &self.humidity)
            .timestamp(&self.timestamp)
            .build()
    }
}

§Helper Traits

Both automatic and manual implementations shown above require that your type implements helper traits.

Structs§

LineProtocolBuilder
Helper type for building a line protocol string.
LineProtocolBuilderFields
Helper type for building a line protocol string (fields insertion).
LineProtocolBuilderTags
Helper type for building a line protocol string (tags insertion).
LineProtocolBuilderTimestamp
Helper type for building a line protocol string (timestamp insertion).

Traits§

LineProtocol
Defines a type that may be converted to a line protocol string.
LineProtocolField
Defines a type that can be written as a line protocol field.
LineProtocolTag
Defines a type that can be written as a line protocol tag.
LineProtocolTimestamp
Defines a type that can be written as a line protocol timestamp.

Derive Macros§

LineProtocol
Derive macro for LineProtocol.
LineProtocolTag
Derive macro for LineProtocolTag.