bolt-proto 0.12.0

Bolt protocol primitives: values, messages, and serialization / deserialization.
Documentation
This crate contains the primitives used in the [Bolt](https://neo4j.com/docs/bolt/current) protocol.
The `Message` and `Value` enums are of particular importance, and are the primary units of
information sent and consumed by Bolt clients/servers.

The `Message` enum encapsulates all possible messages that can be sent between client and server.
```rust
pub enum Message {
    // V1-compatible message types
    Init(Init),
    Run(Run),
    DiscardAll,
    PullAll,
    AckFailure,
    Reset,
    Record(Record),
    Success(Success),
    Failure(Failure),
    Ignored,

    // V3+-compatible message types
    Hello(Hello),
    Goodbye,
    RunWithMetadata(RunWithMetadata),
    Begin(Begin),
    Commit,
    Rollback,

    // V4+-compatible message types
    Discard(Discard),
    Pull(Pull),

    // V4.3+-compatible message types
    Route(Route),

    // v4.4-compatible message types
    RouteWithMetadata(RouteWithMetadata),
}
```
See the [documentation](https://docs.rs/bolt-proto/*/bolt_proto/message/enum.Message.html) for more
details.

The `Value` enum encapsulates all possible values that can be sent in each kind of `Message`.
Structures like `List` and `Map` allow `Value`s to be nested with arbitrary complexity.
```rust
pub enum Value {
    // V1-compatible value types
    Boolean(bool),
    Integer(i64),
    Float(f64),
    Bytes(Vec<u8>),
    List(Vec<Value>),
    Map(HashMap<String, Value>),
    Null,
    String(String),
    Node(Node),
    Relationship(Relationship),
    Path(Path),
    UnboundRelationship(UnboundRelationship),

    // V2+-compatible value types
    Date(NaiveDate),                       // A date without a time zone, i.e. LocalDate
    Time(NaiveTime, FixedOffset),          // A time with UTC offset, i.e. OffsetTime
    DateTimeOffset(DateTime<FixedOffset>), // A date-time with UTC offset, i.e. OffsetDateTime
    DateTimeZoned(DateTime<Tz>),           // A date-time with time zone ID, i.e. ZonedDateTime
    LocalTime(NaiveTime),                  // A time without time zone
    LocalDateTime(NaiveDateTime),          // A date-time without time zone
    Duration(Duration),
    Point2D(Point2D),
    Point3D(Point3D),
}
```
You should rarely ever have to construct variants directly (with the exception of `Value::Null`).
Instead, you should typically use `Value::from` on the type you wish to convert. See the
[documentation](https://docs.rs/bolt-proto/*/bolt_proto/value/enum.Value.html) for more details.