From 7fbeccca575fb06cd1c21ebe781200ace0c85be3 Mon Sep 17 00:00:00 2001 From: Harrish Bansal <145403921+Haxry@users.noreply.github.com> Date: Mon, 17 Feb 2025 17:55:57 +0530 Subject: [PATCH] extending engine capabilities (#14528) Co-authored-by: steven Co-authored-by: Matthias Seitz --- crates/rpc/rpc-engine-api/src/capabilities.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/crates/rpc/rpc-engine-api/src/capabilities.rs b/crates/rpc/rpc-engine-api/src/capabilities.rs index af0609b0d..3da055de6 100644 --- a/crates/rpc/rpc-engine-api/src/capabilities.rs +++ b/crates/rpc/rpc-engine-api/src/capabilities.rs @@ -29,6 +29,11 @@ pub struct EngineCapabilities { } impl EngineCapabilities { + /// Creates a new `EngineCapabilities` instance with the given capabilities. + pub fn new(capabilities: impl IntoIterator>) -> Self { + Self { inner: capabilities.into_iter().map(Into::into).collect() } + } + /// Returns the list of all supported Engine capabilities for Prague spec. fn prague() -> Self { Self { inner: CAPABILITIES.iter().copied().map(str::to_owned).collect() } @@ -38,6 +43,16 @@ impl EngineCapabilities { pub fn list(&self) -> Vec { self.inner.iter().cloned().collect() } + + /// Inserts a new capability. + pub fn add_capability(&mut self, capability: impl Into) { + self.inner.insert(capability.into()); + } + + /// Removes a capability. + pub fn remove_capability(&mut self, capability: &str) -> Option { + self.inner.take(capability) + } } impl Default for EngineCapabilities {