use visualsign::{
assert_deterministic, DeterministicOrdering, SignablePayloadField, SignablePayloadFieldCommon,
SignablePayloadFieldTextV2,
};
fn process_deterministic_type<T: DeterministicOrdering>(value: &T) -> Result<String, String> {
value.verify_deterministic_ordering()?;
serde_json::to_string(value).map_err(|e| e.to_string())
}
#[derive(serde::Serialize, serde::Deserialize)]
struct BadType {
field_b: String,
field_a: String, }
fn main() {
let field = SignablePayloadField::TextV2 {
common: SignablePayloadFieldCommon {
fallback_text: "fallback".to_string(),
label: "label".to_string(),
},
text_v2: SignablePayloadFieldTextV2 {
text: "text".to_string(),
},
};
let _result = process_deterministic_type(&field);
const _: visualsign::StaticAssertDeterministic<SignablePayloadField> =
assert_deterministic::<SignablePayloadField>();
println!("All types passed compile-time deterministic ordering checks!");
}