14个稳定版本
1.5.4 | 2023年12月30日 |
---|---|
1.5.3 | 2023年10月7日 |
1.5.2 | 2023年4月30日 |
1.1.0 | 2022年6月17日 |
1.0.0 | 2022年4月23日 |
671 在 数据库接口 中排名
每月下载量154次
27KB
431 代码行
scylla-macros-flex
这个crate定义了两个derive宏
-
FromRowFlex
- 任何NULL值都将转换为默认值(选项的默认值为none,如果其中一个字段没有实现默认,则不要使用此derive宏)。
-
FromUserTypeFlex
- 结构体中未定义的字段将被忽略,而不会抛出错误。警告:如果使用此部分UDT覆盖udt,可能会导致数据丢失。
- 任何NULL值都将转换为默认值(选项的默认值为none,如果其中一个字段没有实现默认,则不要使用此derive宏)。
支持serde_json
允许您使用与serde_json序列化的任意结构体,在Scylla/Cassandra中以文本形式存储。
它们的行为与UDT大致相同。
需要"serde_json"功能。
derive宏
- FromJson
- IntoJson
优点
- Way more flexible than CQL **FROZEN** UDTs thanks to Rust enums
- Schema can be changed a lot without any issue.
缺点
- Can take more space than UDT
- Can be slower than UDTs
支持rmp-serde
允许您使用与MessagePack序列化的任意结构体,在Scylla/Cassandra中以Blob形式存储。
它们的行为与UDT大致相同。
需要"rmp-serde"功能。
derive宏
- FromMessagePack
- IntoMessagePack
优点
- Way more flexible than CQL **FROZEN** UDTs thanks to Rust enums
- Schema can be changed a lot without any issue.
- Most of the time uses less space than UDT
缺点
- Can be slower than UDTs
快速支持
允许您使用与speedy序列化的任意结构体,在Scylla/Cassandra中以Blob形式存储。
仅在您不会稍后更改模式的情况下使用此功能。它们的行为与UDT大致相同。
需要"speedy"功能。
derive宏
- FromSpeedy
- IntoSpeedy
优点
- Way more flexible than CQL **FROZEN** UDTs thanks to Rust enums
- Less storage required than UDTs because udt include fields names & udt names
- Faster than UDT (because speedy is quite fast)
缺点
- You can't update a field in an atomic manner (like frozen UDTs)
- Changing your schema (eg. adding a field to a struct inside a Vec) will break everything.
依赖关系
~1.5MB
~35K SLoC