bolt-proto

Crates.iobolt-proto
lib.rsbolt-proto
version0.12.0
sourcesrc
created_at2019-12-24 01:50:57.247842
updated_at2022-12-28 02:05:23.892745
descriptionBolt protocol primitives: values, messages, and serialization / deserialization.
homepage
repositoryhttps://github.com/0xSiO/bolt-rs
max_upload_size
id191940
size84,075
Luc Street (0xSiO)

documentation

README

This crate contains the primitives used in the Bolt 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.

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 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 Values to be nested with arbitrary complexity.

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 for more details.

Commit count: 754

cargo fmt