lxmf-sdk 0.7.0

High-level Rust SDK for LXMF clients and RPC-backed LXMF workflows.
Documentation
#[derive(Clone, Debug, Serialize, PartialEq)]
#[non_exhaustive]
pub struct PropagationRemoteUnpeerResult {
    pub remote: String,
    #[serde(default)]
    pub peer: Option<String>,
    #[serde(default)]
    pub removed: bool,
    #[serde(default)]
    pub propagation_cleared: Option<u64>,
    #[serde(default)]
    pub propagation_cleared_bytes: Option<u64>,
    #[serde(default)]
    pub propagation: JsonValue,
    #[serde(default)]
    pub messages: JsonValue,
    #[serde(default)]
    pub result: JsonValue,
    #[serde(default)]
    pub transfer_state: PropagationRemoteTransferState,
    #[serde(default)]
    pub queue: PropagationPeerQueueSnapshot,
}

#[derive(Deserialize)]
struct RawPropagationRemoteUnpeerResult {
    remote: String,
    #[serde(default)]
    peer: Option<String>,
    #[serde(default)]
    removed: bool,
    #[serde(default)]
    propagation_cleared: Option<u64>,
    #[serde(default)]
    propagation_cleared_bytes: Option<u64>,
    #[serde(default)]
    propagation: JsonValue,
    #[serde(default)]
    messages: JsonValue,
    #[serde(default)]
    result: JsonValue,
}

impl<'de> Deserialize<'de> for PropagationRemoteUnpeerResult {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: serde::Deserializer<'de>,
    {
        let raw = RawPropagationRemoteUnpeerResult::deserialize(deserializer)?;
        let queue =
            PropagationPeerQueueSnapshot::from_messages_and_propagation(&raw.messages, &raw.propagation);
        let transfer_state =
            PropagationRemoteTransferState::from_result_and_propagation(&raw.result, &raw.propagation);
        Ok(Self {
            remote: raw.remote,
            peer: raw.peer,
            removed: raw.removed,
            propagation_cleared: raw.propagation_cleared,
            propagation_cleared_bytes: raw.propagation_cleared_bytes,
            propagation: raw.propagation,
            messages: raw.messages,
            result: raw.result,
            transfer_state,
            queue,
        })
    }
}