Skip to main content

OwnedText

Struct OwnedText 

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

An owned UTF-8 payload and the number of Unicode scalars in it, computed on first demand (ADR-115).

The fields are private and OwnedText::new is the only constructor, because a count that does not describe these bytes is not a slow Text, it is a wrong one: t.len() would answer someone else’s length and t[i] would index bytes in a text that has multi-byte scalars. The only writer is OwnedText::char_count, which writes what it just counted from self.bytes, and Text is immutable (ADR-085 allocates a fresh payload for +), so there is no path that could invalidate one.

This costs zero bytes. Box<str> is 16 and SourceSlice is 24, so the #[repr(C)] enum’s union already reserved 8 bytes the owned variant never used. The const _ below is what holds that claim true.

Implementations§

Source§

impl OwnedText

Source

pub fn new(bytes: Box<str>) -> OwnedText

An owned payload over bytes, not yet counted.

Source

pub fn as_str(&self) -> &str

The payload’s bytes as a &str. Owned text is a Box<str>, so this needs no validation and no decoding.

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.