From e0e6798233ae37ae767d5d2553e3e9ff9bb22f5c Mon Sep 17 00:00:00 2001 From: marmeladema Date: Sat, 19 Oct 2024 18:29:00 +0200 Subject: [PATCH] Allow to retrieve `ReaderSegments` object from reader objects --- capnp/src/message.rs | 10 ++++++++++ capnp/src/private/arena.rs | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/capnp/src/message.rs b/capnp/src/message.rs index 51f4574e7..60f57311f 100644 --- a/capnp/src/message.rs +++ b/capnp/src/message.rs @@ -298,6 +298,11 @@ where pub fn size_in_words(&self) -> usize { self.arena.size_in_words() } + + /// Retrieves the underlying [`ReaderSegments`] object. + pub fn get_segments(&self) -> &S { + self.arena.get_segments() + } } /// A message reader whose value is known to be of type `T`. @@ -330,6 +335,11 @@ where pub fn into_inner(self) -> Reader { self.message } + + /// Retrieves the underlying [`ReaderSegments`] object. + pub fn get_segments(&self) -> &S { + self.message.get_segments() + } } impl From> for TypedReader diff --git a/capnp/src/private/arena.rs b/capnp/src/private/arena.rs index c339cdda2..ee304b5c9 100644 --- a/capnp/src/private/arena.rs +++ b/capnp/src/private/arena.rs @@ -82,6 +82,10 @@ where pub fn into_segments(self) -> S { self.segments } + + pub(crate) fn get_segments(&self) -> &S { + &self.segments + } } impl ReaderArena for ReaderArenaImpl