scylla-macros-flex

namescylla-macros-flex
created_at2022-04-23 21:07:16.707432
updated_at2023-12-30 14:05:20.750343
downloads1770
descriptionThis fork of scylla-macros provide alternative parsers with improved compatibility when reading rows & UDTs.
homepage
repositoryhttps://github.com/merlleu/scylla-macros-flex
max_upload_size
id572807
Mr e-RL

documentation

https://docs.rs/scylla-macros-flex

readme

# scylla-macros-flex This crate defines two derive macros: - FromRowFlex: - Any NULL value is converted to the default value (default for option is none, don't use this derive macro if one of the fields doesn't implement default). - FromUserTypeFlex: - A field not defined in the struct will be ignore without throwing an error. Warning: this could lead to a dataloss if the udt is overwritten with this partial udt. - Any NULL value is converted to the default value (default for option is none, don't use this derive macro if one of the fields doesn't implement default). ## serde_json support: Allows you to use arbitrary structs serialized with serde_json, stored as text in Scylla/Cassandra. They have approximately the same behavior as UDT. Requires "serde_json" feature. ### Derive Macros: - FromJson - IntoJson ### Pros: - Way more flexible than CQL **FROZEN** UDTs thanks to Rust enums - Schema can be changed a lot without any issue. ### Cons: - Can take more space than UDT - Can be slower than UDTs ## rmp-serde support: Allows you to use arbitrary structs serialized with MessagePack, stored as Blobs in Scylla/Cassandra. They have approximately the same behavior as UDT. Requires "rmp-serde" feature. ### Derive Macros: - FromMessagePack - IntoMessagePack ### Pros: - 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 ### Cons: - Can be slower than UDTs ## speedy support: Allows you to use arbitrary structs serialized with speedy, stored as Blobs in Scylla/Cassandra. Use this only if you won't change your schema later. They have approximately the same behavior as UDT. Requires "speedy" feature. ### Derive Macros: - FromSpeedy - IntoSpeedy ### Pros: - 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) ### Cons: - 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.
Commit count: 25

cargo fmt