summary refs log tree commit diff
path: root/msg_socket2/src/ser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'msg_socket2/src/ser.rs')
-rw-r--r--msg_socket2/src/ser.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/msg_socket2/src/ser.rs b/msg_socket2/src/ser.rs
new file mode 100644
index 0000000..0a60ea8
--- /dev/null
+++ b/msg_socket2/src/ser.rs
@@ -0,0 +1,20 @@
+use serde::Serializer;
+use std::os::unix::prelude::*;
+
+pub trait SerializeWithFds {
+    fn serialize<Ser>(&self, serializer: SerializerWithFds<Ser>) -> Result<Ser::Ok, Ser::Error>
+    where
+        Ser: Serializer;
+}
+
+#[derive(Debug)]
+pub struct SerializerWithFds<'fds, Ser> {
+    pub serializer: Ser,
+    pub fds: &'fds mut Vec<RawFd>,
+}
+
+impl<'fds, Ser> SerializerWithFds<'fds, Ser> {
+    pub fn new(fds: &'fds mut Vec<RawFd>, serializer: Ser) -> Self {
+        Self { serializer, fds }
+    }
+}