Skip to main content

PersistentWriter

Struct PersistentWriter 

Source
pub struct PersistentWriter(/* private fields */);
Expand description

A Writer “lock” for a PersistentChild.

This struct will send bytes to the stdin of a PersistentChild. This is done indirectly through a LocalSocketStream, since the child process doesn’t have direct access to the stdin of the child, as it belongs to the parent process.

This writer is more of a “writer lock” over the actual inner writer. This is because of reloads.

When duat reloads, the child process is finished. This could prematurely end write calls of separate threads, leading to the loss, duplication, or corruption of data.

That’s why this struct has the PersistentWriter::on_writer method. This method will give you mutable access to the writer while preventing duat from reloading.

You should make use of it in order to “confirm” that a value has actually been written. Any confirmation outside of this method can’t be trusted.

Implementations§

Source§

impl PersistentWriter

Source

pub fn on_writer<R>( &mut self, f: impl FnOnce(&mut RawPersistentWriter) -> Result<R>, ) -> Result<R>

Calls a function on the inner Writer.

This will also prevent Duat from reloading, allowing for lossless and duplicationless data sending.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.