Skip to main content

JsonStr

Struct JsonStr 

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

A JSON string span — a (start, end) pair into the original input.

Materializing into a real &str requires the original input slice. Stored as two u32s instead of a fat &[u8] so the parent Event fits in 16 bytes (one xmm register), eliminating the per-event memory shuffles that dominated typed parsing in profiling.

Implementations§

Source§

impl JsonStr

Source

pub const fn has_escapes(&self) -> bool

true iff the lexer saw a \ in the string. When false, the raw bytes are already valid UTF-8 (the lexer validated them inline) and can be turned into &str for free.

Source

pub const fn start(&self) -> u32

Source

pub const fn end(&self) -> u32

Source

pub fn raw_bytes<'input>(&self, input: &'input [u8]) -> Option<&'input [u8]>

Raw bytes between (but not including) the quotes, taken from input.

Caller must pass the same input the parser was constructed with; otherwise the indices are meaningless. Returns None if the input is shorter than the recorded range (only happens if the caller passes a different/truncated buffer).

Source

pub fn as_str<'input>(&self, input: &'input [u8]) -> Option<&'input str>

The string as &str when it contains no escapes. Skips re-validation: the parser already ensured the bytes are valid UTF-8.

Returns None when the string had escapes (caller must decode into a buffer) or when input doesn’t cover the recorded range.

Trait Implementations§

Source§

impl Clone for JsonStr

Source§

fn clone(&self) -> JsonStr

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

impl Debug for JsonStr

Source§

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

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

impl PartialEq for JsonStr

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Copy for JsonStr

Source§

impl Eq for JsonStr

Source§

impl StructuralPartialEq for JsonStr

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> 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 = 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.