#bolt #protocols #neo4j #timezone #client-server

bolt-proto

Bolt 协议原语:值、消息和序列化/反序列化

14 个版本 (重大更改)

0.12.0 2022 年 12 月 28 日
0.11.0 2021 年 11 月 24 日
0.10.0 2021 年 3 月 30 日
0.9.1 2020 年 9 月 18 日
0.3.0 2019 年 12 月 25 日

#1592 in 编码

Download history 44/week @ 2024-03-11 70/week @ 2024-03-18 32/week @ 2024-03-25 97/week @ 2024-04-01 56/week @ 2024-04-08 37/week @ 2024-04-15 65/week @ 2024-04-22 51/week @ 2024-04-29 61/week @ 2024-05-06 81/week @ 2024-05-13 81/week @ 2024-05-20 57/week @ 2024-05-27 90/week @ 2024-06-03 93/week @ 2024-06-10 59/week @ 2024-06-17 53/week @ 2024-06-24

每月 298 次下载
用于 6 个 crate (3 个直接使用)

MIT 许可证

84KB
2K SLoC

此 crate 包含在 Bolt 协议中使用的原语。枚举 MessageValue 特别重要,是 Bolt 客户端/服务器发送和接收信息的主要信息单元。

枚举 Message 封装了客户端和服务器之间可以发送的所有可能的消息。

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),
}

有关更多详细信息,请参阅文档

枚举 Value 封装了在每种类型的 Message 中可以发送的所有可能值。例如,结构 ListMap 允许 Value 以任意复杂度嵌套。

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),
}

您很少需要直接构建变体(除了 Value::Null)。相反,您通常应使用 Value::from 在您希望转换的类型上。有关更多详细信息,请参阅文档

依赖项

~3.5–4.5MB
~84K SLoC