pub trait WritableClientSender {
type Transport: Transport;
// Required method
fn write<___R>(
&self,
request: &mut ___R,
) -> Result<ResponseFuture<'_, Self::Transport, Write>, EncodeError>
where ___R: Encode<<Self::Transport as Transport>::SendBuffer, Encoded = WireWritableWriteRequest>;
}
Expand description
A helper trait for the Writable
client sender.
Required Associated Types§
Required Methods§
Sourcefn write<___R>(
&self,
request: &mut ___R,
) -> Result<ResponseFuture<'_, Self::Transport, Write>, EncodeError>where
___R: Encode<<Self::Transport as Transport>::SendBuffer, Encoded = WireWritableWriteRequest>,
fn write<___R>(
&self,
request: &mut ___R,
) -> Result<ResponseFuture<'_, Self::Transport, Write>, EncodeError>where
___R: Encode<<Self::Transport as Transport>::SendBuffer, Encoded = WireWritableWriteRequest>,
Writes data at the seek offset. The seek offset is moved forward by the number of bytes written. If the file is in append mode, the seek offset is first set to the end of the file, followed by the write, in one atomic step.
The file size may grow if the seek offset plus data.length
is beyond
the current end of file.
- request
data
the byte buffer to write to the file.
- response
actual_count
the number of bytes written.
§Invariants
- The returned
actual_count
will never be greater thandata.length
. - If the server is unable to write all the data due to e.g. not enough
space,
actual_count
may be less thandata.length
. If no bytes could be written, an error is returned. - If
data.length
is zero, the server should perform all the checks ensuring write access without mutating the file and return a successful write of zero bytes. The seek offset is still updated if in append mode.
This method requires the [Rights.WRITE_BYTES
] right.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl<___T> WritableClientSender for ClientSender<___T, Writable>where
___T: Transport,
impl<___T> WritableClientSender for ClientSender<___T, Writable>where
___T: Transport,
Source§fn write<___R>(
&self,
request: &mut ___R,
) -> Result<ResponseFuture<'_, Self::Transport, Write>, EncodeError>where
___R: Encode<<Self::Transport as Transport>::SendBuffer, Encoded = WireWritableWriteRequest>,
fn write<___R>(
&self,
request: &mut ___R,
) -> Result<ResponseFuture<'_, Self::Transport, Write>, EncodeError>where
___R: Encode<<Self::Transport as Transport>::SendBuffer, Encoded = WireWritableWriteRequest>,
Writes data at the seek offset. The seek offset is moved forward by the number of bytes written. If the file is in append mode, the seek offset is first set to the end of the file, followed by the write, in one atomic step.
The file size may grow if the seek offset plus data.length
is beyond
the current end of file.
- request
data
the byte buffer to write to the file.
- response
actual_count
the number of bytes written.
§Invariants
- The returned
actual_count
will never be greater thandata.length
. - If the server is unable to write all the data due to e.g. not enough
space,
actual_count
may be less thandata.length
. If no bytes could be written, an error is returned. - If
data.length
is zero, the server should perform all the checks ensuring write access without mutating the file and return a successful write of zero bytes. The seek offset is still updated if in append mode.
This method requires the [Rights.WRITE_BYTES
] right.