pub struct OpenedAsyncWriter { /* private fields */ }Expand description
An already-open asynchronous writer bound to provider identity.
§Examples
use qubit_fs::metadata::{FileKind, FileMetadata, FileSystemId, OpenedFileInfo};
use qubit_fs::path::Path;
use qubit_fs::spi::{AsyncFileWriteSession, OpenedAsyncWriter, SpiFuture};
use qubit_fs::write::{WriteAbortOutcome, WriteFailure};
use qubit_io::AsyncOutput;
use std::io::Result as IoResult;
use std::pin::Pin;
use std::task::{Context, Poll};
struct Session;
impl AsyncOutput for Session {
type Item = u8;
unsafe fn poll_write_unchecked(
self: Pin<&mut Self>,
_: &mut Context<'_>,
_: &[u8],
_: usize,
count: usize,
) -> Poll<IoResult<usize>> {
Poll::Ready(Ok(count))
}
fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<IoResult<()>> {
Poll::Ready(Ok(()))
}
}
impl AsyncFileWriteSession for Session {
fn commit_async<'a>(
self: Pin<&'a mut Self>,
) -> SpiFuture<'a, Result<qubit_fs::metadata::WriteOutcome, WriteFailure>> {
Box::pin(async { unreachable!() })
}
fn abort_async<'a>(self: Pin<&'a mut Self>) -> SpiFuture<'a, qubit_fs::error::FsResult<WriteAbortOutcome>> {
Box::pin(async { Ok(WriteAbortOutcome::NotPublished) })
}
}
let info = OpenedFileInfo::new(FileSystemId::new("doc")?, Path::parse("/draft")?)
.with_metadata(FileMetadata::new(FileKind::File));
let writer = OpenedAsyncWriter::new(info, Box::new(Session));
assert_eq!("/draft", writer.info().path().as_str());Implementations§
Source§impl OpenedAsyncWriter
impl OpenedAsyncWriter
Sourcepub fn new(
info: OpenedFileInfo,
session: Box<dyn AsyncFileWriteSession>,
) -> Self
pub fn new( info: OpenedFileInfo, session: Box<dyn AsyncFileWriteSession>, ) -> Self
Sourcepub fn info(&self) -> &OpenedFileInfo
pub fn info(&self) -> &OpenedFileInfo
Auto Trait Implementations§
impl !RefUnwindSafe for OpenedAsyncWriter
impl !Sync for OpenedAsyncWriter
impl !UnwindSafe for OpenedAsyncWriter
impl Freeze for OpenedAsyncWriter
impl Send for OpenedAsyncWriter
impl Unpin for OpenedAsyncWriter
impl UnsafeUnpin for OpenedAsyncWriter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more