aboutsummaryrefslogtreecommitdiff
path: root/xtask/src/lib.rs
diff options
context:
space:
mode:
authorGravatar bors[bot] <26634292+bors[bot]@users.noreply.github.com> 2021-11-25 00:55:07 +0000
committerGravatar GitHub <noreply@github.com> 2021-11-25 00:55:07 +0000
commita78c497b7d1eb68335eb664e7dfbaf8a8fd879dd (patch)
treef8f3c093ada6b19ddca60c009b9a3ac80cea6100 /xtask/src/lib.rs
parent6b013138b734b9bbeb24a345f75d2bcc1c69fa8d (diff)
parent74e9bbe6811deb4888bf0c20157506ab06e4f957 (diff)
downloadcortex-m-a78c497b7d1eb68335eb664e7dfbaf8a8fd879dd.tar.gz
cortex-m-a78c497b7d1eb68335eb664e7dfbaf8a8fd879dd.tar.zst
cortex-m-a78c497b7d1eb68335eb664e7dfbaf8a8fd879dd.zip
Merge #363
363: scb: derive serde, Hash, PartialOrd for VectActive behind gates r=thalesfragoso a=tmplt Exposes two new feature gates for VectActive serde::{Serialize, Deserialize} (via "serde") and Hash, PartialOrd (via "std-map") for use on host-side ITM tracing programs. While the struct itself is not received directly over ITM, its use greatly simplifies the implementation by allowing VectActive as keys in map collections and file/socket {,de}serialization to forward the structure elsewhere. These features are not enabled by default. Before this patch, serde functionality could be realized via [0], but this does not propagate down a dependency chain (i.e. if realized for crate B, which crate A depends on, serde functionality is not exposed in crate A unless VectActive is wrapped in a type from crate B). I am not aware of any method to realize PartialOrd, Hash derivation for a downstream crate. [0] https://serde.rs/remote-derive.html Co-authored-by: Viktor Sonesten <v@tmplt.dev>
Diffstat (limited to 'xtask/src/lib.rs')
-rw-r--r--xtask/src/lib.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs
index a7b85e7..c3d8356 100644
--- a/xtask/src/lib.rs
+++ b/xtask/src/lib.rs
@@ -208,3 +208,24 @@ pub fn check_blobs() {
println!("Blobs identical.");
}
+
+// Check that serde and PartialOrd works with VectActive
+pub fn check_host_side() {
+ use cortex_m::peripheral::scb::VectActive;
+
+ // check serde
+ {
+ let v = VectActive::from(22).unwrap();
+ let json = serde_json::to_string(&v).expect("Failed to serialize VectActive");
+ let deser_v: VectActive =
+ serde_json::from_str(&json).expect("Failed to deserialize VectActive");
+ assert_eq!(deser_v, v);
+ }
+
+ // check PartialOrd
+ {
+ let a = VectActive::from(19).unwrap();
+ let b = VectActive::from(20).unwrap();
+ assert_eq!(a < b, true);
+ }
+}