pub struct OwnedBytes { /* private fields */ }
Expand description

Input into a query engine.

Implementations§

source§

impl OwnedBytes

source

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

Get a reference to the bytes as a slice.

source

pub fn as_borrowed(&self) -> BorrowedBytes<'_>

Convert to BorrowedBytes.

source

pub unsafe fn from_raw_parts(ptr: NonNull<u8>, size: usize) -> Self

Create an instance of OwnedBytes from raw pointers.

Safety

This is highly unsafe, and requires similar invariants as stdlib’s Vec.

  • ptr must have been allocated using the global allocator;
  • ptr must have been allocated with size equal to size;
  • first size values that ptr points to must be correctly initialized instances of u8.
  • the size must be not more than isize::MAX;
  • ptr must be aligned to the MAX_BLOCK_SIZE boundary;
  • size must be divisible by MAX_BLOCK_SIZE.

Ownership of ptr is transferred to the resulting instance. You must ensure there are no other mutable references to its contents and that the memory is not deallocated.

source

pub fn new<T: AsRef<[u8]>>(src: &T) -> Result<Self, InputError>

Copy a buffer of bytes and create a proper OwnedBytes instance.

The contents of the buffer will be copied and might be padded to the MAX_BLOCK_SIZE boundary.

Errors

If the length of the buffer plus the padding exceeds the system limit of isize::MAX, an InputError::AllocationSizeExceeded error will be raised.

source

pub unsafe fn new_unchecked<T: AsRef<[u8]>>(src: &T) -> Self

Create a new instance of OwnedBytes from a buffer satisfying all invariants.

Safety

The invariants are assumed, not checked. You must ensure that the buffer passed to this function:

Trait Implementations§

source§

impl Drop for OwnedBytes

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a> From<&BorrowedBytes<'a>> for OwnedBytes

source§

fn from(value: &BorrowedBytes<'_>) -> Self

Converts to this type from the input type.
source§

impl Input for OwnedBytes

§

type BlockIterator<'a, 'r, const N: usize, R> = BorrowedBytesBlockIterator<'a, 'r, N, R> where R: InputRecorder<&'a [u8]> + 'r

Type of the iterator used by iter_blocks, parameterized by the lifetime of source input and the size of the block.
§

type Block<'a, const N: usize> = &'a [u8]

Type of the blocks returned by the BlockIterator.
source§

fn iter_blocks<'a, 'r, R, const N: usize>( &'a self, recorder: &'r R ) -> Self::BlockIterator<'a, 'r, N, R>where R: InputRecorder<&'a [u8]>,

Iterate over blocks of size N of the input. N has to be a power of two larger than 1.
source§

fn seek_backward(&self, from: usize, needle: u8) -> Option<usize>

Search for an occurrence of needle in the input, starting from from and looking back. Returns the index of the first occurrence or None if the needle was not found.
source§

fn seek_forward<const N: usize>( &self, from: usize, needles: [u8; N] ) -> Result<Option<(usize, u8)>, InputError>

Search for an occurrence of any of the needles in the input, starting from from and looking forward. Returns the index of the first occurrence and the needle found, or None if none of the needles were not found. Read more
source§

fn seek_non_whitespace_forward( &self, from: usize ) -> Result<Option<(usize, u8)>, InputError>

Search for the first byte in the input that is not ASCII whitespace starting from from. Returns a pair: the index of first such byte, and the byte itself; or None if no non-whitespace characters were found. Read more
source§

fn seek_non_whitespace_backward(&self, from: usize) -> Option<(usize, u8)>

Search for the first byte in the input that is not ASCII whitespace starting from from and looking back. Returns a pair: the index of first such byte, and the byte itself; or None if no non-whitespace characters were found.
source§

fn find_member( &self, from: usize, label: &JsonString ) -> Result<Option<usize>, InputError>

Search the input for the first occurrence of member name member (comparing bitwise, including double quotes delimiters) starting from from. Returns the index of the first occurrence, or None if no occurrence was found. Read more
source§

fn is_member_match(&self, from: usize, to: usize, label: &JsonString) -> bool

Decide whether the slice of input between from (inclusive) and to (exclusive) matches the member (comparing bitwise, including double quotes delimiters). Read more
source§

impl TryFrom<&[u8]> for OwnedBytes

§

type Error = InputError

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

fn try_from(value: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&str> for OwnedBytes

§

type Error = InputError

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

fn try_from(value: &str) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<String> for OwnedBytes

§

type Error = InputError

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

fn try_from(value: String) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Vec<u8, Global>> for OwnedBytes

§

type Error = InputError

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

fn try_from(value: Vec<u8>) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.