Skip to main content

ValueView

Struct ValueView 

Source
pub struct ValueView<'s>(/* private fields */);
Expand description

Returns a view onto a string’s contents.

WARNING: This does not copy the string’s contents, and will therefore be invalidated if the GC can move the string while the ValueView is alive. It is therefore required that no GC or allocation can happen while there is an active ValueView. This requirement may be relaxed in the future.

V8 strings are either encoded as one-byte or two-bytes per character.

Implementations§

Source§

impl<'s> ValueView<'s>

Source

pub fn new(isolate: &mut Isolate, string: Local<'s, String>) -> Self

Source

pub fn data(&self) -> ValueViewData<'_>

Source

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

Returns a zero-copy &str if the string is one-byte and pure ASCII.

This is the fastest way to access a V8 string’s contents as a Rust &str — no allocation, no copy, no transcoding. Returns None for strings that contain non-ASCII Latin-1 bytes or are two-byte encoded.

The returned reference is valid as long as this ValueView is alive.

Source

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

Returns the string contents as a Cow<str>.

  • One-byte ASCII: returns Cow::Borrowed(&str) — true zero-copy.
  • One-byte Latin-1 (non-ASCII): transcodes to UTF-8, returns Cow::Owned.
  • Two-byte (UTF-16): transcodes to UTF-8 via std::string::String::from_utf16_lossy, returns Cow::Owned.

For the common case of ASCII strings this is zero-copy. The Latin-1 transcoding uses a SIMD-friendly loop that processes 8 bytes at a time.

Trait Implementations§

Source§

impl Drop for ValueView<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'s> Freeze for ValueView<'s>

§

impl<'s> RefUnwindSafe for ValueView<'s>

§

impl<'s> Send for ValueView<'s>

§

impl<'s> Sync for ValueView<'s>

§

impl<'s> Unpin for ValueView<'s>

§

impl<'s> UnsafeUnpin for ValueView<'s>

§

impl<'s> UnwindSafe for ValueView<'s>

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.
Source§

impl<T> ErasedDestructor for T
where T: 'static,