cosmwasm_std/results/
empty.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4/// An empty struct that serves as a placeholder in different places,
5/// such as contracts that don't set a custom message.
6///
7/// It is designed to be expressible in correct JSON and JSON Schema but
8/// contains no meaningful data. Previously we used enums without cases,
9/// but those cannot represented as valid JSON Schema (https://github.com/CosmWasm/cosmwasm/issues/451)
10#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, Default)]
11pub struct Empty {}
12
13#[cfg(test)]
14mod tests {
15    use super::*;
16
17    use crate::{from_json, to_json_vec};
18
19    #[test]
20    fn empty_can_be_instantiated() {
21        let instance = Empty::default();
22        assert_eq!(instance, Empty {});
23    }
24
25    #[test]
26    fn empty_can_be_instantiated_serialized_and_deserialized() {
27        let instance = Empty {};
28        let serialized = to_json_vec(&instance).unwrap();
29        assert_eq!(serialized, b"{}");
30
31        let deserialized: Empty = from_json(b"{}").unwrap();
32        assert_eq!(deserialized, instance);
33
34        let deserialized: Empty = from_json(b"{\"stray\":\"data\"}").unwrap();
35        assert_eq!(deserialized, instance);
36    }
37}