return Some(T) and not T in read method Message trait
diff --git a/crates/proc-macro-api/src/legacy_protocol/msg.rs b/crates/proc-macro-api/src/legacy_protocol/msg.rs
index 1c77863..b0e80de 100644
--- a/crates/proc-macro-api/src/legacy_protocol/msg.rs
+++ b/crates/proc-macro-api/src/legacy_protocol/msg.rs
@@ -152,7 +152,7 @@
     fn read<R: BufRead, C: Codec>(inp: &mut R, buf: &mut C::Buf) -> io::Result<Option<Self>> {
         Ok(match C::read(inp, buf)? {
             None => None,
-            Some(buf) => C::decode(buf)?,
+            Some(buf) => Some(C::decode(buf)?),
         })
     }
     fn write<W: Write, C: Codec>(self, out: &mut W) -> io::Result<()> {