diff --git a/src/read.rs b/src/read.rs
index a806abdc5..cf1a40e51 100644
--- a/src/read.rs
+++ b/src/read.rs
@@ -111,6 +111,71 @@ pub trait Read<'de>: private::Sealed {
fn set_failed(&mut self, failed: &mut bool);
}
+impl<'de, R: Read<'de>> private::Sealed for &mut R {}
+impl<'de, R: Read<'de>> Read<'de> for &mut R {
+ fn next(&mut self) -> Result