diff --git a/crates/ruma-serde/src/canonical_json/value.rs b/crates/ruma-serde/src/canonical_json/value.rs index 0b8aaa8d..ffab7760 100644 --- a/crates/ruma-serde/src/canonical_json/value.rs +++ b/crates/ruma-serde/src/canonical_json/value.rs @@ -119,6 +119,22 @@ impl CanonicalJsonValue { _ => None, } } + + /// If the `CanonicalJsonValue` is an `Array`, return a mutable reference to the inner value. + pub fn as_array_mut(&mut self) -> Option<&mut Vec> { + match self { + Self::Array(a) => Some(a), + _ => None, + } + } + + /// If the `CanonicalJsonValue` is an `Object`, return a mutable reference to the inner value. + pub fn as_object_mut(&mut self) -> Option<&mut Object> { + match self { + Self::Object(o) => Some(o), + _ => None, + } + } } impl Default for CanonicalJsonValue {