From 51673679186daa5cd9419f88fb2379b50118092d Mon Sep 17 00:00:00 2001 From: Lorenz Leutgeb Date: Thu, 18 Sep 2025 15:38:33 +0200 Subject: [PATCH] radicle: Introduce `trait GetPayload` This new trait can be implemented by any struct that allows loading of payloads. Currently, this only applies to the identity document. --- crates/radicle/src/identity/doc.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/radicle/src/identity/doc.rs b/crates/radicle/src/identity/doc.rs index a57d59b1..c79e9f13 100644 --- a/crates/radicle/src/identity/doc.rs +++ b/crates/radicle/src/identity/doc.rs @@ -272,6 +272,23 @@ impl Deref for Payload { } } +/// Trait for all types that may carry payloads. +pub trait GetPayload { + fn get_payload(&self, id: &PayloadId) -> Option<&Payload>; +} + +impl GetPayload for Doc { + fn get_payload(&self, id: &PayloadId) -> Option<&Payload> { + self.payload.get(id) + } +} + +impl GetPayload for RawDoc { + fn get_payload(&self, id: &PayloadId) -> Option<&Payload> { + self.payload.get(id) + } +} + /// A verified identity document at a specific commit. #[derive(Debug, Clone, PartialEq, Eq)] pub struct DocAt {