Skip to main content

file_storage/op/file/write/
write_op.rs

1use crate::system::LocalWriteOp;
2use std::io::Write;
3
4/// A write operation.
5pub struct WriteOp {
6    pub(crate) inner: WriteOpInner,
7}
8
9/// A file-system-specific write operation.
10pub(crate) enum WriteOpInner {
11    /// A local write operation.
12    Local(LocalWriteOp),
13}
14
15impl Write for WriteOp {
16    fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
17        match &mut self.inner {
18            WriteOpInner::Local(op) => op.write(buf),
19        }
20    }
21
22    fn flush(&mut self) -> std::io::Result<()> {
23        match &mut self.inner {
24            WriteOpInner::Local(op) => op.flush(),
25        }
26    }
27}
28
29impl WriteOp {
30    //! Close
31
32    /// Ensures the file has been completely written and closes the file.
33    pub fn close(self) -> Result<(), std::io::Error> {
34        match self.inner {
35            WriteOpInner::Local(op) => op.close(),
36        }
37    }
38}