SEDSnet 4.2.0

A memory safe, no_std-capable networking stack with routing, discovery, reliability, and Rust/C/Python bindings.
Documentation
#![cfg(feature = "std")]
use sedsnet::{ReliableMode, config::schema_snapshot_from_json_bytes};
fn schema(mode: serde_json::Value) -> serde_json::Value {
    serde_json::json!({"endpoints": [{"rust":"SingleReliabilityEp","name":"SINGLE_RELIABILITY_EP"}],
        "types": [{"name":"SINGLE_RELIABILITY_VALUE", "class":"Data",
            "element":{"kind":"Static","data_type":"Float32","count":1},
            "endpoints":["SingleReliabilityEp"],"reliable":mode}]})
}
#[test]
fn single_reliability_enum_parses_all_three_values() {
    for (name, expected) in [
        ("Off", ReliableMode::None),
        ("Ordered", ReliableMode::Ordered),
        ("Unordered", ReliableMode::Unordered),
    ] {
        let snapshot =
            schema_snapshot_from_json_bytes(&serde_json::to_vec(&schema(name.into())).unwrap())
                .unwrap();
        assert_eq!(snapshot.types[0].reliable, expected);
        assert_eq!(serde_json::to_value(expected).unwrap(), name);
    }
}
#[test]
fn legacy_boolean_mode_pairs_and_invalid_modes_are_rejected() {
    for value in [
        serde_json::json!(true),
        serde_json::json!(false),
        serde_json::json!(0),
        serde_json::json!(null),
        serde_json::json!("None"),
        serde_json::json!("off"),
    ] {
        let mut input = schema(value);
        input["types"][0]["reliable_mode"] = "Ordered".into();
        assert!(schema_snapshot_from_json_bytes(&serde_json::to_vec(&input).unwrap()).is_err());
    }
    let mut conflicting = schema("Off".into());
    conflicting["types"][0]["reliable_mode"] = "Unordered".into();
    assert!(schema_snapshot_from_json_bytes(&serde_json::to_vec(&conflicting).unwrap()).is_err());
    let mut input = schema("Off".into());
    input["types"][0]
        .as_object_mut()
        .unwrap()
        .remove("reliable");
    input["types"][0]["reliable_mode"] = "Unordered".into();
    assert!(schema_snapshot_from_json_bytes(&serde_json::to_vec(&input).unwrap()).is_err());
}