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), List(Vec), Map(HashMap), 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), // A date-time with UTC offset, i.e. OffsetDateTime DateTimeZoned(DateTime), // 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.