Skip to main content

SeqString

Struct SeqString 

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

Byte string that tracks its allocation source.

§Safety Invariants

  • If global=true: ptr points to a global-allocated byte buffer whose memory matches len/capacity; the buffer is freed on Drop.
  • If global=false: ptr points into the thread-local arena; the arena owns the memory and frees it in bulk on strand exit.
  • The byte content is not required to be valid UTF-8.
  • For global strings: capacity must match the original Vec<u8>’s capacity so deallocation is correctly sized.

Implementations§

Source§

impl SeqString

Source

pub fn as_bytes(&self) -> &[u8]

Borrow the underlying bytes. Always succeeds; the type carries no UTF-8 invariant. Byte-clean operations (concat, byte length, equality, search, network I/O, crypto, etc.) should use this.

Source

pub fn as_str(&self) -> Option<&str>

View as &str if the bytes happen to be valid UTF-8.

Text-level operations (codepoint counting, case folding, string.json-escape, regex.* with Unicode classes, formatting for display) call this and treat None as a fallible-text failure — the conventional (value Bool) failure tuple, returning -1 / empty string / false per the surrounding op’s contract.

Source

pub fn as_str_lossy(&self) -> Cow<'_, str>

View as &str, replacing any invalid UTF-8 with U+FFFD. Use only for human-facing display where lossiness is acceptable (Debug, panic messages, REPL output). Operations that round- trip user data must use [as_bytes] or [as_str] instead.

Source

pub fn as_str_or_empty(&self) -> &str

View as &str, returning "" if the bytes aren’t valid UTF-8.

The convenience for text-required ops (string.length, string.find, file paths, integer parsing, …) that expect a &str and have an existing degenerate-result-or-failure-tuple path for empty input. A non-UTF-8 input lands in that same failure path, with no extra branching at every call site.

Source

pub fn is_global(&self) -> bool

Check if this string is globally allocated

Source

pub fn len(&self) -> usize

Get length in bytes

Source

pub fn is_empty(&self) -> bool

Check if empty

Source

pub fn is_interned(&self) -> bool

Check if this is an interned/static string (Issue #166)

Interned strings have capacity=0 and point to static data. They are never freed and can be compared by pointer for O(1) equality.

Source

pub fn as_ptr(&self) -> *const u8

Get raw pointer to string data

Used for O(1) pointer comparison of interned symbols.

Source

pub unsafe fn from_raw_parts( ptr: *const u8, len: usize, capacity: usize, global: bool, ) -> SeqString

Reconstruct SeqString from raw parts

§Safety

The parts must be a valid allocation matching the ptr/len/capacity/global invariants documented on SeqString.

Trait Implementations§

Source§

impl Clone for SeqString

Source§

fn clone(&self) -> SeqString

Clone always allocates from the global allocator for Send safety.

When a SeqString is sent through a channel, the receiving strand gets an independent global-allocated copy that doesn’t depend on the sender’s arena. Byte-clean: copies the underlying &[u8], no UTF-8 validation.

1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SeqString

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Display for SeqString

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Drop for SeqString

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<&str> for SeqString

Convert &str to SeqString using arena allocation

Source§

fn from(s: &str) -> SeqString

Converts to this type from the input type.
Source§

impl From<String> for SeqString

Convert String to SeqString using global allocation

Source§

fn from(s: String) -> SeqString

Converts to this type from the input type.
Source§

impl PartialEq for SeqString

Source§

fn eq(&self, other: &SeqString) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for SeqString

Source§

impl Send for SeqString

Source§

impl Sync for SeqString

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> 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V