From 822d5ad79b86b638343b1c4840595d38aa4190b3 Mon Sep 17 00:00:00 2001 From: Christian Eck Date: Wed, 19 Aug 2026 11:00:14 +0200 Subject: [PATCH] add split traits --- embedded-io-async/src/lib.rs | 12 ++++++++++++ embedded-io/src/lib.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/embedded-io-async/src/lib.rs b/embedded-io-async/src/lib.rs index b90935f2..6fb97437 100644 --- a/embedded-io-async/src/lib.rs +++ b/embedded-io-async/src/lib.rs @@ -167,3 +167,15 @@ pub trait Seek: ErrorType { self.seek(SeekFrom::Current(0)).await } } + +/// Split a stream in a reader and writer, which are independent +pub trait SplitRW { + /// Reader type of the split stream + type Reader: Read; + + /// Writer type of the split stream + type Writer: Write; + + /// Split a stream in a independent reader and writer + fn split_rw(&mut self) -> (Self::Reader, Self::Writer); +} diff --git a/embedded-io/src/lib.rs b/embedded-io/src/lib.rs index daca2441..0dbfe3cd 100644 --- a/embedded-io/src/lib.rs +++ b/embedded-io/src/lib.rs @@ -566,3 +566,15 @@ pub trait WriteReady: ErrorType { /// If this returns `true`, it's guaranteed that the next call to [`Write::write`] will not block. fn write_ready(&mut self) -> Result; } + +/// Split a stream in a reader and writer, which are independent +pub trait SplitRW { + /// Reader type of the split stream + type Reader: Read; + + /// Writer type of the split stream + type Writer: Write; + + /// Split a stream in a independent reader and writer + fn split_rw(&mut self) -> (Self::Reader, Self::Writer); +}