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(
11    Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema, Default, cw_schema::Schemaifier,
12)]
13pub struct Empty {}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    use crate::{from_json, to_json_vec};
20
21    #[test]
22    fn empty_can_be_instantiated() {
23        let instance = Empty::default();
24        assert_eq!(instance, Empty {});
25    }
26
27    #[test]
28    fn empty_can_be_instantiated_serialized_and_deserialized() {
29        let instance = Empty {};
30        let serialized = to_json_vec(&instance).unwrap();
31        assert_eq!(serialized, b"{}");
32
33        let deserialized: Empty = from_json(b"{}").unwrap();
34        assert_eq!(deserialized, instance);
35
36        let deserialized: Empty = from_json(b"{\"stray\":\"data\"}").unwrap();
37        assert_eq!(deserialized, instance);
38    }
39}