pub struct OperatorsReader<'a> { /* private fields */ }
Expand description
A reader for a core WebAssembly function’s operators.
Implementations§
Source§impl<'a> OperatorsReader<'a>
impl<'a> OperatorsReader<'a>
Sourcepub fn original_position(&self) -> usize
pub fn original_position(&self) -> usize
Gets the original position of the reader.
Sourcepub fn ensure_end(&self) -> Result<(), BinaryReaderError>
pub fn ensure_end(&self) -> Result<(), BinaryReaderError>
Ensures the reader is at the end.
This function returns an error if there is extra data after the operators.
Sourcepub fn read(&mut self) -> Result<Operator<'a>, BinaryReaderError>
pub fn read(&mut self) -> Result<Operator<'a>, BinaryReaderError>
Reads an operator from the reader.
Sourcepub fn into_iter_with_offsets(self) -> OperatorsIteratorWithOffsets<'a> ⓘ
pub fn into_iter_with_offsets(self) -> OperatorsIteratorWithOffsets<'a> ⓘ
Converts to an iterator of operators paired with offsets.
Sourcepub fn read_with_offset(
&mut self,
) -> Result<(Operator<'a>, usize), BinaryReaderError>
pub fn read_with_offset( &mut self, ) -> Result<(Operator<'a>, usize), BinaryReaderError>
Reads an operator with its offset.
Sourcepub fn visit_operator<T>(
&mut self,
visitor: &mut T,
) -> Result<<T as VisitOperator<'a>>::Output, BinaryReaderError>where
T: VisitOperator<'a>,
pub fn visit_operator<T>(
&mut self,
visitor: &mut T,
) -> Result<<T as VisitOperator<'a>>::Output, BinaryReaderError>where
T: VisitOperator<'a>,
Visit a single operator with the specified VisitOperator
instance.
See BinaryReader::visit_operator
for more information.
Sourcepub fn get_binary_reader(&self) -> BinaryReader<'a>
pub fn get_binary_reader(&self) -> BinaryReader<'a>
Gets a binary reader from this operators reader.
Sourcepub fn is_end_then_eof(&self) -> bool
pub fn is_end_then_eof(&self) -> bool
Returns whether there is an end
opcode followed by eof remaining in
this reader.
Trait Implementations§
Source§impl<'a> Clone for OperatorsReader<'a>
impl<'a> Clone for OperatorsReader<'a>
Source§fn clone(&self) -> OperatorsReader<'a>
fn clone(&self) -> OperatorsReader<'a>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<'a> IntoIterator for OperatorsReader<'a>
impl<'a> IntoIterator for OperatorsReader<'a>
Source§fn into_iter(self) -> <OperatorsReader<'a> as IntoIterator>::IntoIter
fn into_iter(self) -> <OperatorsReader<'a> as IntoIterator>::IntoIter
Reads content of the code section.
§Examples
let reader = BinaryReader::new(data, 0);
let code_reader = CodeSectionReader::new(reader).unwrap();
for body in code_reader {
let body = body.expect("function body");
let mut op_reader = body.get_operators_reader().expect("op reader");
let ops = op_reader.into_iter().collect::<Result<Vec<Operator>>>().expect("ops");
assert!(
if let [Operator::Nop, Operator::End] = ops.as_slice() { true } else { false },
"found {:?}",
ops
);
}
Source§type Item = Result<Operator<'a>, BinaryReaderError>
type Item = Result<Operator<'a>, BinaryReaderError>
The type of the elements being iterated over.
Source§type IntoIter = OperatorsIterator<'a>
type IntoIter = OperatorsIterator<'a>
Which kind of iterator are we turning this into?
Auto Trait Implementations§
impl<'a> Freeze for OperatorsReader<'a>
impl<'a> RefUnwindSafe for OperatorsReader<'a>
impl<'a> Send for OperatorsReader<'a>
impl<'a> Sync for OperatorsReader<'a>
impl<'a> Unpin for OperatorsReader<'a>
impl<'a> UnwindSafe for OperatorsReader<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more