Skip to main content

Text

Struct Text 

Source
pub struct Text { /* private fields */ }
Expand description

One text cell. Cheap to clone; every clone is the same place.

Implementations§

Source§

impl Text

Source

pub fn id(&self) -> TextId

Source

pub fn load(&self) -> Result<String>

A bounded copy of the current text. Returns Error::Contended if another publication reuses its bank while the copy is in progress.

Source

pub fn len(&self) -> Result<usize>

Source

pub fn is_empty(&self) -> Result<bool>

Source

pub fn store(&self, text: &str) -> Result<()>

Replace the text. A live writer causes Error::Contended, not a spin.

Source

pub fn append(&self, text: &str) -> Result<usize>

Append by publishing a complete new bank. A refused write changes neither the committed value nor its revision.

Source

pub fn release(self) -> Result<()>

Retire this generation immediately. The physical slot remains pinned until every handle to the old generation has been dropped.

Source

pub fn version(&self) -> Result<u64>

The full-width committed revision token. Compare for equality; do not truncate it or interpret its bank bit as an in-progress marker.

Source

pub fn wait_changed(&self, since: u64) -> Result<u64>

Park until the text has been written since since, then return the sequence now. A released cell wakes every waiter with Error::StaleText. Blocking; an async runtime wraps it.

Source

pub fn wait_changed_until( &self, since: u64, interrupt: &AtomicBool, ) -> Result<Option<u64>>

Self::wait_changed, but a second word can end it. Ok(None) means the interrupt arrived, not that time ran out — nothing here measures time. The canceller sets interrupt, then calls Self::wake_waiters. The wake advances a separate parking generation; it does not change the text or its committed revision.

Source

pub fn wake_waiters(&self) -> Result<()>

Wake everyone parked on this text cell without appending to it. Only useful after the word the waiter also watches has been set.

Trait Implementations§

Source§

impl Clone for Text

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Text

§

impl !UnwindSafe for Text

§

impl Freeze for Text

§

impl Send for Text

§

impl Sync for Text

§

impl Unpin for Text

§

impl UnsafeUnpin for Text

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.