expect_json/expects/
expect_op.rs

1use crate::expects::SerializeExpect;
2use crate::expects::SerializeExpectOp;
3use serde::Serialize;
4use std::fmt::Debug;
5use std::ops::Deref;
6use std::ops::DerefMut;
7
8#[derive(Debug, Clone, Serialize)]
9#[serde(into = "SerializeExpect")]
10pub struct ExpectOp<V>
11where
12    V: Into<SerializeExpectOp> + Clone,
13{
14    inner: V,
15}
16
17impl<V> ExpectOp<V>
18where
19    V: Into<SerializeExpectOp> + Clone,
20{
21    pub fn new(inner: V) -> Self {
22        Self { inner }
23    }
24}
25
26impl<V> Deref for ExpectOp<V>
27where
28    V: Into<SerializeExpectOp> + Clone,
29{
30    type Target = V;
31
32    fn deref(&self) -> &Self::Target {
33        &self.inner
34    }
35}
36
37impl<V> DerefMut for ExpectOp<V>
38where
39    V: Into<SerializeExpectOp> + Clone,
40{
41    fn deref_mut(&mut self) -> &mut Self::Target {
42        &mut self.inner
43    }
44}
45
46impl<V> From<ExpectOp<V>> for SerializeExpect
47where
48    V: Into<SerializeExpectOp> + Clone,
49{
50    fn from(expect_op: ExpectOp<V>) -> Self {
51        let inner = Into::<SerializeExpectOp>::into(expect_op.inner);
52        SerializeExpect::from(inner)
53    }
54}