From 70baa472b2bee69f205cc1aada304d597b858005 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Tue, 4 Jan 2022 06:49:48 -0600 Subject: Move crate::fuse::* to the top-level --- src/mod.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/mod.rs (limited to 'src/mod.rs') diff --git a/src/mod.rs b/src/mod.rs new file mode 100644 index 0000000..84c6878 --- /dev/null +++ b/src/mod.rs @@ -0,0 +1,43 @@ +use crate::proto; +use std::marker::PhantomData; + +pub mod io; +pub mod mount; +pub mod ops; +pub mod session; + +mod private_trait { + pub trait Sealed {} +} + +pub trait Operation<'o>: private_trait::Sealed + Sized { + type RequestBody: crate::proto::Structured<'o>; + type ReplyTail; +} + +pub type Op<'o, O = ops::Any> = (Request<'o, O>, Reply<'o, O>); + +pub struct Request<'o, O: Operation<'o>> { + header: proto::InHeader, + body: O::RequestBody, +} + +#[must_use] +pub struct Reply<'o, O: Operation<'o>> { + session: &'o session::Session, + unique: u64, + tail: O::ReplyTail, +} + +#[must_use] +pub struct Done<'o>(PhantomData<&'o mut &'o ()>); + +impl Done<'_> { + fn new() -> Self { + Done(PhantomData) + } + + fn consume(self) { + drop(self); + } +} -- cgit v1.2.3