difftreelog
feat versioned structs helper
in: master
3 files changed
crates/struct-versioning/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/crates/struct-versioning/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "struct-versioning"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+syn = { version = "1.0", features = ["full"] }
+quote = "1.0.15"
+
+[lib]
+proc-macro = true
crates/struct-versioning/src/lib.rsdiffbeforeafterbothno content
crates/struct-versioning/tests/upper.rsdiffbeforeafterboth--- /dev/null
+++ b/crates/struct-versioning/tests/upper.rs
@@ -0,0 +1,17 @@
+use struct_versioning::versioned;
+
+#[versioned(version = 2, upper)]
+#[derive(Debug, PartialEq)]
+struct MyStruct {
+ #[version(..2)]
+ v: u32,
+ #[version(2.., upper(v as u64 + 1))]
+ v: u64,
+}
+
+#[test]
+fn test() {
+ let old = MyStructVersion1 { v: 1 };
+ let new = MyStructVersion2::from(old);
+ assert_eq!(new.v, 2);
+}