Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-api/src/transport/framing.rs')
-rw-r--r--crates/proc-macro-api/src/transport/framing.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/proc-macro-api/src/transport/framing.rs b/crates/proc-macro-api/src/transport/framing.rs
new file mode 100644
index 0000000000..56c3b68e8c
--- /dev/null
+++ b/crates/proc-macro-api/src/transport/framing.rs
@@ -0,0 +1,14 @@
+//! Protocol framing
+
+use std::io::{self, BufRead, Write};
+
+pub trait Framing {
+ type Buf: Default + Send + Sync;
+
+ fn read<'a, R: BufRead + ?Sized>(
+ inp: &mut R,
+ buf: &'a mut Self::Buf,
+ ) -> io::Result<Option<&'a mut Self::Buf>>;
+
+ fn write<W: Write + ?Sized>(out: &mut W, buf: &Self::Buf) -> io::Result<()>;
+}