Coverage Report

Created: 2025-01-06 07:43

/src/wasm-tools/crates/wasmparser/src/readers.rs
Line
Count
Source (jump to first uncovered line)
1
/* Copyright 2018 Mozilla Foundation
2
 *
3
 * Licensed under the Apache License, Version 2.0 (the "License");
4
 * you may not use this file except in compliance with the License.
5
 * You may obtain a copy of the License at
6
 *
7
 *     http://www.apache.org/licenses/LICENSE-2.0
8
 *
9
 * Unless required by applicable law or agreed to in writing, software
10
 * distributed under the License is distributed on an "AS IS" BASIS,
11
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
 * See the License for the specific language governing permissions and
13
 * limitations under the License.
14
 */
15
16
use crate::{BinaryReader, BinaryReaderError, Result};
17
use ::core::fmt;
18
use ::core::marker;
19
use ::core::ops::Range;
20
21
#[cfg(feature = "component-model")]
22
mod component;
23
mod core;
24
25
#[cfg(feature = "component-model")]
26
pub use self::component::*;
27
pub use self::core::*;
28
29
/// A trait implemented for items that can be decoded directly from a
30
/// `BinaryReader`, or that which can be parsed from the WebAssembly binary
31
/// format.
32
///
33
/// Note that this is also accessible as a [`BinaryReader::read`] method.
34
pub trait FromReader<'a>: Sized {
35
    /// Attempts to read `Self` from the provided binary reader, returning an
36
    /// error if it is unable to do so.
37
    fn from_reader(reader: &mut BinaryReader<'a>) -> Result<Self>;
38
}
39
40
impl<'a> FromReader<'a> for bool {
41
0
    fn from_reader(reader: &mut BinaryReader<'a>) -> Result<Self> {
42
0
        match reader.read_u8()? {
43
0
            0 => Ok(false),
44
0
            1 => Ok(true),
45
0
            _ => Err(BinaryReaderError::new(
46
0
                "invalid boolean value",
47
0
                reader.original_position() - 1,
48
0
            )),
49
        }
50
0
    }
51
}
52
53
impl<'a> FromReader<'a> for u32 {
54
4.49M
    fn from_reader(reader: &mut BinaryReader<'a>) -> Result<Self> {
55
4.49M
        reader.read_var_u32()
56
4.49M
    }
57
}
58
59
impl<'a> FromReader<'a> for &'a str {
60
2.58M
    fn from_reader(reader: &mut BinaryReader<'a>) -> Result<Self> {
61
2.58M
        reader.read_string()
62
2.58M
    }
63
}
64
65
impl<'a, T, U> FromReader<'a> for (T, U)
66
where
67
    T: FromReader<'a>,
68
    U: FromReader<'a>,
69
{
70
567k
    fn from_reader(reader: &mut BinaryReader<'a>) -> Result<Self> {
71
567k
        Ok((reader.read()?, reader.read()?))
72
567k
    }
73
}
74
75
/// A generic structure for reading a section of a WebAssembly binary which has
76
/// a limited number of items within it.
77
///
78
/// Many WebAssembly sections are a count of items followed by that many items.
79
/// This helper structure can be used to parse these sections and provides
80
/// an iteration-based API for reading the contents.
81
///
82
/// Note that this always implements the [`Clone`] trait to represent the
83
/// ability to parse the section multiple times.
84
pub struct SectionLimited<'a, T> {
85
    reader: BinaryReader<'a>,
86
    count: u32,
87
    _marker: marker::PhantomData<T>,
88
}
89
90
impl<'a, T> SectionLimited<'a, T> {
91
    /// Creates a new section reader from the provided contents.
92
    ///
93
    /// The `data` provided here is the data of the section itself that will be
94
    /// parsed. The `offset` argument is the byte offset, in the original wasm
95
    /// binary, that the section was found. The `offset` argument is used
96
    /// for error reporting.
97
    ///
98
    /// # Errors
99
    ///
100
    /// Returns an error if a 32-bit count couldn't be read from the `data`.
101
1.29M
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
1.29M
        let count = reader.read_var_u32()?;
103
1.29M
        Ok(SectionLimited {
104
1.29M
            reader,
105
1.29M
            count,
106
1.29M
            _marker: marker::PhantomData,
107
1.29M
        })
108
1.29M
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::code::FunctionBody>>::new
Line
Count
Source
101
14.1k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
14.1k
        let count = reader.read_var_u32()?;
103
14.1k
        Ok(SectionLimited {
104
14.1k
            reader,
105
14.1k
            count,
106
14.1k
            _marker: marker::PhantomData,
107
14.1k
        })
108
14.1k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::branch_hinting::BranchHint>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::branch_hinting::BranchHintFunction>>::new
<wasmparser::readers::SectionLimited<wasmparser::readers::core::data::Data>>::new
Line
Count
Source
101
10.0k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
10.0k
        let count = reader.read_var_u32()?;
103
10.0k
        Ok(SectionLimited {
104
10.0k
            reader,
105
10.0k
            count,
106
10.0k
            _marker: marker::PhantomData,
107
10.0k
        })
108
10.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::init::ConstExpr>>::new
Line
Count
Source
101
31.3k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
31.3k
        let count = reader.read_var_u32()?;
103
31.3k
        Ok(SectionLimited {
104
31.3k
            reader,
105
31.3k
            count,
106
31.3k
            _marker: marker::PhantomData,
107
31.3k
        })
108
31.3k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::IndirectNaming>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::Naming>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::reloc::RelocationEntry>>::new
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::MemoryType>>::new
Line
Count
Source
101
55.5k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
55.5k
        let count = reader.read_var_u32()?;
103
55.5k
        Ok(SectionLimited {
104
55.5k
            reader,
105
55.5k
            count,
106
55.5k
            _marker: marker::PhantomData,
107
55.5k
        })
108
55.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::TagType>>::new
Line
Count
Source
101
3.08k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
3.08k
        let count = reader.read_var_u32()?;
103
3.08k
        Ok(SectionLimited {
104
3.08k
            reader,
105
3.08k
            count,
106
3.08k
            _marker: marker::PhantomData,
107
3.08k
        })
108
3.08k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::RecGroup>>::new
Line
Count
Source
101
91.4k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
91.4k
        let count = reader.read_var_u32()?;
103
91.4k
        Ok(SectionLimited {
104
91.4k
            reader,
105
91.4k
            count,
106
91.4k
            _marker: marker::PhantomData,
107
91.4k
        })
108
91.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::tables::Table>>::new
Line
Count
Source
101
20.9k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
20.9k
        let count = reader.read_var_u32()?;
103
20.9k
        Ok(SectionLimited {
104
20.9k
            reader,
105
20.9k
            count,
106
20.9k
            _marker: marker::PhantomData,
107
20.9k
        })
108
20.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::exports::Export>>::new
Line
Count
Source
101
58.2k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
58.2k
        let count = reader.read_var_u32()?;
103
58.2k
        Ok(SectionLimited {
104
58.2k
            reader,
105
58.2k
            count,
106
58.2k
            _marker: marker::PhantomData,
107
58.2k
        })
108
58.2k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::globals::Global>>::new
Line
Count
Source
101
34.2k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
34.2k
        let count = reader.read_var_u32()?;
103
34.2k
        Ok(SectionLimited {
104
34.2k
            reader,
105
34.2k
            count,
106
34.2k
            _marker: marker::PhantomData,
107
34.2k
        })
108
34.2k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::imports::Import>>::new
Line
Count
Source
101
53.5k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
53.5k
        let count = reader.read_var_u32()?;
103
53.5k
        Ok(SectionLimited {
104
53.5k
            reader,
105
53.5k
            count,
106
53.5k
            _marker: marker::PhantomData,
107
53.5k
        })
108
53.5k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::linking::SymbolInfo>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::linking::ComdatSymbol>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::linking::Comdat>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::linking::Segment>>::new
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::linking::InitFunc>>::new
<wasmparser::readers::SectionLimited<wasmparser::readers::core::elements::Element>>::new
Line
Count
Source
101
14.6k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
14.6k
        let count = reader.read_var_u32()?;
103
14.6k
        Ok(SectionLimited {
104
14.6k
            reader,
105
14.6k
            count,
106
14.6k
            _marker: marker::PhantomData,
107
14.6k
        })
108
14.6k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersField>>::new
Line
Count
Source
101
25.0k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
25.0k
        let count = reader.read_var_u32()?;
103
25.0k
        Ok(SectionLimited {
104
25.0k
            reader,
105
25.0k
            count,
106
25.0k
            _marker: marker::PhantomData,
107
25.0k
        })
108
25.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersFieldValue>>::new
Line
Count
Source
101
12.5k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
12.5k
        let count = reader.read_var_u32()?;
103
12.5k
        Ok(SectionLimited {
104
12.5k
            reader,
105
12.5k
            count,
106
12.5k
            _marker: marker::PhantomData,
107
12.5k
        })
108
12.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::canonicals::CanonicalFunction>>::new
Line
Count
Source
101
77.5k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
77.5k
        let count = reader.read_var_u32()?;
103
77.5k
        Ok(SectionLimited {
104
77.5k
            reader,
105
77.5k
            count,
106
77.5k
            _marker: marker::PhantomData,
107
77.5k
        })
108
77.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::types::ComponentType>>::new
Line
Count
Source
101
262k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
262k
        let count = reader.read_var_u32()?;
103
262k
        Ok(SectionLimited {
104
262k
            reader,
105
262k
            count,
106
262k
            _marker: marker::PhantomData,
107
262k
        })
108
262k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::component::types::CoreType>>::new
<wasmparser::readers::SectionLimited<wasmparser::readers::component::aliases::ComponentAlias>>::new
Line
Count
Source
101
97.9k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
97.9k
        let count = reader.read_var_u32()?;
103
97.9k
        Ok(SectionLimited {
104
97.9k
            reader,
105
97.9k
            count,
106
97.9k
            _marker: marker::PhantomData,
107
97.9k
        })
108
97.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::exports::ComponentExport>>::new
Line
Count
Source
101
211k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
211k
        let count = reader.read_var_u32()?;
103
211k
        Ok(SectionLimited {
104
211k
            reader,
105
211k
            count,
106
211k
            _marker: marker::PhantomData,
107
211k
        })
108
211k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::imports::ComponentImport>>::new
Line
Count
Source
101
55.0k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
55.0k
        let count = reader.read_var_u32()?;
103
55.0k
        Ok(SectionLimited {
104
55.0k
            reader,
105
55.0k
            count,
106
55.0k
            _marker: marker::PhantomData,
107
55.0k
        })
108
55.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::ComponentInstance>>::new
Line
Count
Source
101
19.4k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
19.4k
        let count = reader.read_var_u32()?;
103
19.4k
        Ok(SectionLimited {
104
19.4k
            reader,
105
19.4k
            count,
106
19.4k
            _marker: marker::PhantomData,
107
19.4k
        })
108
19.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::Instance>>::new
Line
Count
Source
101
37.3k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
37.3k
        let count = reader.read_var_u32()?;
103
37.3k
        Ok(SectionLimited {
104
37.3k
            reader,
105
37.3k
            count,
106
37.3k
            _marker: marker::PhantomData,
107
37.3k
        })
108
37.3k
    }
<wasmparser::readers::SectionLimited<u32>>::new
Line
Count
Source
101
108k
    pub fn new(mut reader: BinaryReader<'a>) -> Result<Self> {
102
108k
        let count = reader.read_var_u32()?;
103
108k
        Ok(SectionLimited {
104
108k
            reader,
105
108k
            count,
106
108k
            _marker: marker::PhantomData,
107
108k
        })
108
108k
    }
109
110
    /// Returns the count of total items within this section.
111
1.00M
    pub fn count(&self) -> u32 {
112
1.00M
        self.count
113
1.00M
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::branch_hinting::BranchHint>>::count
<wasmparser::readers::SectionLimited<wasmparser::readers::core::code::FunctionBody>>::count
Line
Count
Source
111
1.52k
    pub fn count(&self) -> u32 {
112
1.52k
        self.count
113
1.52k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::data::Data>>::count
Line
Count
Source
111
6.48k
    pub fn count(&self) -> u32 {
112
6.48k
        self.count
113
6.48k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::init::ConstExpr>>::count
Line
Count
Source
111
17.5k
    pub fn count(&self) -> u32 {
112
17.5k
        self.count
113
17.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::MemoryType>>::count
Line
Count
Source
111
30.8k
    pub fn count(&self) -> u32 {
112
30.8k
        self.count
113
30.8k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::TagType>>::count
Line
Count
Source
111
580
    pub fn count(&self) -> u32 {
112
580
        self.count
113
580
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::RecGroup>>::count
Line
Count
Source
111
56.9k
    pub fn count(&self) -> u32 {
112
56.9k
        self.count
113
56.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::tables::Table>>::count
Line
Count
Source
111
15.1k
    pub fn count(&self) -> u32 {
112
15.1k
        self.count
113
15.1k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::exports::Export>>::count
Line
Count
Source
111
33.5k
    pub fn count(&self) -> u32 {
112
33.5k
        self.count
113
33.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::globals::Global>>::count
Line
Count
Source
111
14.6k
    pub fn count(&self) -> u32 {
112
14.6k
        self.count
113
14.6k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::imports::Import>>::count
Line
Count
Source
111
35.1k
    pub fn count(&self) -> u32 {
112
35.1k
        self.count
113
35.1k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::elements::Element>>::count
Line
Count
Source
111
11.0k
    pub fn count(&self) -> u32 {
112
11.0k
        self.count
113
11.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::canonicals::CanonicalFunction>>::count
Line
Count
Source
111
77.5k
    pub fn count(&self) -> u32 {
112
77.5k
        self.count
113
77.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::types::ComponentType>>::count
Line
Count
Source
111
237k
    pub fn count(&self) -> u32 {
112
237k
        self.count
113
237k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::component::types::CoreType>>::count
<wasmparser::readers::SectionLimited<wasmparser::readers::component::aliases::ComponentAlias>>::count
Line
Count
Source
111
97.9k
    pub fn count(&self) -> u32 {
112
97.9k
        self.count
113
97.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::exports::ComponentExport>>::count
Line
Count
Source
111
186k
    pub fn count(&self) -> u32 {
112
186k
        self.count
113
186k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::imports::ComponentImport>>::count
Line
Count
Source
111
55.0k
    pub fn count(&self) -> u32 {
112
55.0k
        self.count
113
55.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::ComponentInstance>>::count
Line
Count
Source
111
19.4k
    pub fn count(&self) -> u32 {
112
19.4k
        self.count
113
19.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::Instance>>::count
Line
Count
Source
111
37.3k
    pub fn count(&self) -> u32 {
112
37.3k
        self.count
113
37.3k
    }
<wasmparser::readers::SectionLimited<u32>>::count
Line
Count
Source
111
68.8k
    pub fn count(&self) -> u32 {
112
68.8k
        self.count
113
68.8k
    }
114
115
    /// Returns whether the original byte offset of this section.
116
0
    pub fn original_position(&self) -> usize {
117
0
        self.reader.original_position()
118
0
    }
119
120
    /// Returns the range, as byte offsets, of this section within the original
121
    /// wasm binary.
122
1.05M
    pub fn range(&self) -> Range<usize> {
123
1.05M
        self.reader.range()
124
1.05M
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::data::Data>>::range
Line
Count
Source
122
6.49k
    pub fn range(&self) -> Range<usize> {
123
6.49k
        self.reader.range()
124
6.49k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::MemoryType>>::range
Line
Count
Source
122
49.7k
    pub fn range(&self) -> Range<usize> {
123
49.7k
        self.reader.range()
124
49.7k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::TagType>>::range
Line
Count
Source
122
623
    pub fn range(&self) -> Range<usize> {
123
623
        self.reader.range()
124
623
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::RecGroup>>::range
Line
Count
Source
122
79.7k
    pub fn range(&self) -> Range<usize> {
123
79.7k
        self.reader.range()
124
79.7k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::tables::Table>>::range
Line
Count
Source
122
15.2k
    pub fn range(&self) -> Range<usize> {
123
15.2k
        self.reader.range()
124
15.2k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::exports::Export>>::range
Line
Count
Source
122
52.3k
    pub fn range(&self) -> Range<usize> {
123
52.3k
        self.reader.range()
124
52.3k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::globals::Global>>::range
Line
Count
Source
122
17.2k
    pub fn range(&self) -> Range<usize> {
123
17.2k
        self.reader.range()
124
17.2k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::imports::Import>>::range
Line
Count
Source
122
46.4k
    pub fn range(&self) -> Range<usize> {
123
46.4k
        self.reader.range()
124
46.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::elements::Element>>::range
Line
Count
Source
122
11.0k
    pub fn range(&self) -> Range<usize> {
123
11.0k
        self.reader.range()
124
11.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::canonicals::CanonicalFunction>>::range
Line
Count
Source
122
77.5k
    pub fn range(&self) -> Range<usize> {
123
77.5k
        self.reader.range()
124
77.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::types::ComponentType>>::range
Line
Count
Source
122
237k
    pub fn range(&self) -> Range<usize> {
123
237k
        self.reader.range()
124
237k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::component::types::CoreType>>::range
<wasmparser::readers::SectionLimited<wasmparser::readers::component::aliases::ComponentAlias>>::range
Line
Count
Source
122
97.9k
    pub fn range(&self) -> Range<usize> {
123
97.9k
        self.reader.range()
124
97.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::exports::ComponentExport>>::range
Line
Count
Source
122
186k
    pub fn range(&self) -> Range<usize> {
123
186k
        self.reader.range()
124
186k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::imports::ComponentImport>>::range
Line
Count
Source
122
55.0k
    pub fn range(&self) -> Range<usize> {
123
55.0k
        self.reader.range()
124
55.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::ComponentInstance>>::range
Line
Count
Source
122
19.4k
    pub fn range(&self) -> Range<usize> {
123
19.4k
        self.reader.range()
124
19.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::Instance>>::range
Line
Count
Source
122
37.3k
    pub fn range(&self) -> Range<usize> {
123
37.3k
        self.reader.range()
124
37.3k
    }
<wasmparser::readers::SectionLimited<u32>>::range
Line
Count
Source
122
60.8k
    pub fn range(&self) -> Range<usize> {
123
60.8k
        self.reader.range()
124
60.8k
    }
125
126
    /// Returns an iterator which yields not only each item in this section but
127
    /// additionally the offset of each item within the section.
128
999k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
999k
    where
130
999k
        T: FromReader<'a>,
131
999k
    {
132
999k
        SectionLimitedIntoIterWithOffsets {
133
999k
            iter: self.into_iter(),
134
999k
        }
135
999k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::branch_hinting::BranchHint>>::into_iter_with_offsets
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersFieldValue>>::into_iter_with_offsets
<wasmparser::readers::SectionLimited<wasmparser::readers::core::data::Data>>::into_iter_with_offsets
Line
Count
Source
128
6.90k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
6.90k
    where
130
6.90k
        T: FromReader<'a>,
131
6.90k
    {
132
6.90k
        SectionLimitedIntoIterWithOffsets {
133
6.90k
            iter: self.into_iter(),
134
6.90k
        }
135
6.90k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::MemoryType>>::into_iter_with_offsets
Line
Count
Source
128
31.5k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
31.5k
    where
130
31.5k
        T: FromReader<'a>,
131
31.5k
    {
132
31.5k
        SectionLimitedIntoIterWithOffsets {
133
31.5k
            iter: self.into_iter(),
134
31.5k
        }
135
31.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::TagType>>::into_iter_with_offsets
Line
Count
Source
128
1.69k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
1.69k
    where
130
1.69k
        T: FromReader<'a>,
131
1.69k
    {
132
1.69k
        SectionLimitedIntoIterWithOffsets {
133
1.69k
            iter: self.into_iter(),
134
1.69k
        }
135
1.69k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::RecGroup>>::into_iter_with_offsets
Line
Count
Source
128
65.6k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
65.6k
    where
130
65.6k
        T: FromReader<'a>,
131
65.6k
    {
132
65.6k
        SectionLimitedIntoIterWithOffsets {
133
65.6k
            iter: self.into_iter(),
134
65.6k
        }
135
65.6k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::tables::Table>>::into_iter_with_offsets
Line
Count
Source
128
15.9k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
15.9k
    where
130
15.9k
        T: FromReader<'a>,
131
15.9k
    {
132
15.9k
        SectionLimitedIntoIterWithOffsets {
133
15.9k
            iter: self.into_iter(),
134
15.9k
        }
135
15.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::exports::Export>>::into_iter_with_offsets
Line
Count
Source
128
34.3k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
34.3k
    where
130
34.3k
        T: FromReader<'a>,
131
34.3k
    {
132
34.3k
        SectionLimitedIntoIterWithOffsets {
133
34.3k
            iter: self.into_iter(),
134
34.3k
        }
135
34.3k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::globals::Global>>::into_iter_with_offsets
Line
Count
Source
128
18.3k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
18.3k
    where
130
18.3k
        T: FromReader<'a>,
131
18.3k
    {
132
18.3k
        SectionLimitedIntoIterWithOffsets {
133
18.3k
            iter: self.into_iter(),
134
18.3k
        }
135
18.3k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::imports::Import>>::into_iter_with_offsets
Line
Count
Source
128
37.9k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
37.9k
    where
130
37.9k
        T: FromReader<'a>,
131
37.9k
    {
132
37.9k
        SectionLimitedIntoIterWithOffsets {
133
37.9k
            iter: self.into_iter(),
134
37.9k
        }
135
37.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::elements::Element>>::into_iter_with_offsets
Line
Count
Source
128
11.4k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
11.4k
    where
130
11.4k
        T: FromReader<'a>,
131
11.4k
    {
132
11.4k
        SectionLimitedIntoIterWithOffsets {
133
11.4k
            iter: self.into_iter(),
134
11.4k
        }
135
11.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::canonicals::CanonicalFunction>>::into_iter_with_offsets
Line
Count
Source
128
77.5k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
77.5k
    where
130
77.5k
        T: FromReader<'a>,
131
77.5k
    {
132
77.5k
        SectionLimitedIntoIterWithOffsets {
133
77.5k
            iter: self.into_iter(),
134
77.5k
        }
135
77.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::types::ComponentType>>::into_iter_with_offsets
Line
Count
Source
128
237k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
237k
    where
130
237k
        T: FromReader<'a>,
131
237k
    {
132
237k
        SectionLimitedIntoIterWithOffsets {
133
237k
            iter: self.into_iter(),
134
237k
        }
135
237k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::component::types::CoreType>>::into_iter_with_offsets
<wasmparser::readers::SectionLimited<wasmparser::readers::component::aliases::ComponentAlias>>::into_iter_with_offsets
Line
Count
Source
128
97.9k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
97.9k
    where
130
97.9k
        T: FromReader<'a>,
131
97.9k
    {
132
97.9k
        SectionLimitedIntoIterWithOffsets {
133
97.9k
            iter: self.into_iter(),
134
97.9k
        }
135
97.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::exports::ComponentExport>>::into_iter_with_offsets
Line
Count
Source
128
186k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
186k
    where
130
186k
        T: FromReader<'a>,
131
186k
    {
132
186k
        SectionLimitedIntoIterWithOffsets {
133
186k
            iter: self.into_iter(),
134
186k
        }
135
186k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::imports::ComponentImport>>::into_iter_with_offsets
Line
Count
Source
128
55.0k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
55.0k
    where
130
55.0k
        T: FromReader<'a>,
131
55.0k
    {
132
55.0k
        SectionLimitedIntoIterWithOffsets {
133
55.0k
            iter: self.into_iter(),
134
55.0k
        }
135
55.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::ComponentInstance>>::into_iter_with_offsets
Line
Count
Source
128
19.4k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
19.4k
    where
130
19.4k
        T: FromReader<'a>,
131
19.4k
    {
132
19.4k
        SectionLimitedIntoIterWithOffsets {
133
19.4k
            iter: self.into_iter(),
134
19.4k
        }
135
19.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::Instance>>::into_iter_with_offsets
Line
Count
Source
128
37.3k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
37.3k
    where
130
37.3k
        T: FromReader<'a>,
131
37.3k
    {
132
37.3k
        SectionLimitedIntoIterWithOffsets {
133
37.3k
            iter: self.into_iter(),
134
37.3k
        }
135
37.3k
    }
<wasmparser::readers::SectionLimited<u32>>::into_iter_with_offsets
Line
Count
Source
128
65.0k
    pub fn into_iter_with_offsets(self) -> SectionLimitedIntoIterWithOffsets<'a, T>
129
65.0k
    where
130
65.0k
        T: FromReader<'a>,
131
65.0k
    {
132
65.0k
        SectionLimitedIntoIterWithOffsets {
133
65.0k
            iter: self.into_iter(),
134
65.0k
        }
135
65.0k
    }
136
}
137
138
impl<T> Clone for SectionLimited<'_, T> {
139
948k
    fn clone(&self) -> Self {
140
948k
        SectionLimited {
141
948k
            reader: self.reader.clone(),
142
948k
            count: self.count,
143
948k
            _marker: self._marker,
144
948k
        }
145
948k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::IndirectNaming> as core::clone::Clone>::clone
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::Naming> as core::clone::Clone>::clone
<wasmparser::readers::SectionLimited<wasmparser::readers::core::data::Data> as core::clone::Clone>::clone
Line
Count
Source
139
5.44k
    fn clone(&self) -> Self {
140
5.44k
        SectionLimited {
141
5.44k
            reader: self.reader.clone(),
142
5.44k
            count: self.count,
143
5.44k
            _marker: self._marker,
144
5.44k
        }
145
5.44k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::reloc::RelocationEntry> as core::clone::Clone>::clone
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::MemoryType> as core::clone::Clone>::clone
Line
Count
Source
139
29.0k
    fn clone(&self) -> Self {
140
29.0k
        SectionLimited {
141
29.0k
            reader: self.reader.clone(),
142
29.0k
            count: self.count,
143
29.0k
            _marker: self._marker,
144
29.0k
        }
145
29.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::TagType> as core::clone::Clone>::clone
Line
Count
Source
139
580
    fn clone(&self) -> Self {
140
580
        SectionLimited {
141
580
            reader: self.reader.clone(),
142
580
            count: self.count,
143
580
            _marker: self._marker,
144
580
        }
145
580
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::RecGroup> as core::clone::Clone>::clone
Line
Count
Source
139
56.8k
    fn clone(&self) -> Self {
140
56.8k
        SectionLimited {
141
56.8k
            reader: self.reader.clone(),
142
56.8k
            count: self.count,
143
56.8k
            _marker: self._marker,
144
56.8k
        }
145
56.8k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::tables::Table> as core::clone::Clone>::clone
Line
Count
Source
139
13.4k
    fn clone(&self) -> Self {
140
13.4k
        SectionLimited {
141
13.4k
            reader: self.reader.clone(),
142
13.4k
            count: self.count,
143
13.4k
            _marker: self._marker,
144
13.4k
        }
145
13.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::exports::Export> as core::clone::Clone>::clone
Line
Count
Source
139
33.4k
    fn clone(&self) -> Self {
140
33.4k
        SectionLimited {
141
33.4k
            reader: self.reader.clone(),
142
33.4k
            count: self.count,
143
33.4k
            _marker: self._marker,
144
33.4k
        }
145
33.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::globals::Global> as core::clone::Clone>::clone
Line
Count
Source
139
14.5k
    fn clone(&self) -> Self {
140
14.5k
        SectionLimited {
141
14.5k
            reader: self.reader.clone(),
142
14.5k
            count: self.count,
143
14.5k
            _marker: self._marker,
144
14.5k
        }
145
14.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::imports::Import> as core::clone::Clone>::clone
Line
Count
Source
139
35.0k
    fn clone(&self) -> Self {
140
35.0k
        SectionLimited {
141
35.0k
            reader: self.reader.clone(),
142
35.0k
            count: self.count,
143
35.0k
            _marker: self._marker,
144
35.0k
        }
145
35.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::elements::Element> as core::clone::Clone>::clone
Line
Count
Source
139
9.95k
    fn clone(&self) -> Self {
140
9.95k
        SectionLimited {
141
9.95k
            reader: self.reader.clone(),
142
9.95k
            count: self.count,
143
9.95k
            _marker: self._marker,
144
9.95k
        }
145
9.95k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::canonicals::CanonicalFunction> as core::clone::Clone>::clone
Line
Count
Source
139
77.5k
    fn clone(&self) -> Self {
140
77.5k
        SectionLimited {
141
77.5k
            reader: self.reader.clone(),
142
77.5k
            count: self.count,
143
77.5k
            _marker: self._marker,
144
77.5k
        }
145
77.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::types::ComponentType> as core::clone::Clone>::clone
Line
Count
Source
139
237k
    fn clone(&self) -> Self {
140
237k
        SectionLimited {
141
237k
            reader: self.reader.clone(),
142
237k
            count: self.count,
143
237k
            _marker: self._marker,
144
237k
        }
145
237k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::component::types::CoreType> as core::clone::Clone>::clone
<wasmparser::readers::SectionLimited<wasmparser::readers::component::aliases::ComponentAlias> as core::clone::Clone>::clone
Line
Count
Source
139
97.9k
    fn clone(&self) -> Self {
140
97.9k
        SectionLimited {
141
97.9k
            reader: self.reader.clone(),
142
97.9k
            count: self.count,
143
97.9k
            _marker: self._marker,
144
97.9k
        }
145
97.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::exports::ComponentExport> as core::clone::Clone>::clone
Line
Count
Source
139
186k
    fn clone(&self) -> Self {
140
186k
        SectionLimited {
141
186k
            reader: self.reader.clone(),
142
186k
            count: self.count,
143
186k
            _marker: self._marker,
144
186k
        }
145
186k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::imports::ComponentImport> as core::clone::Clone>::clone
Line
Count
Source
139
55.0k
    fn clone(&self) -> Self {
140
55.0k
        SectionLimited {
141
55.0k
            reader: self.reader.clone(),
142
55.0k
            count: self.count,
143
55.0k
            _marker: self._marker,
144
55.0k
        }
145
55.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::ComponentInstance> as core::clone::Clone>::clone
Line
Count
Source
139
19.4k
    fn clone(&self) -> Self {
140
19.4k
        SectionLimited {
141
19.4k
            reader: self.reader.clone(),
142
19.4k
            count: self.count,
143
19.4k
            _marker: self._marker,
144
19.4k
        }
145
19.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::Instance> as core::clone::Clone>::clone
Line
Count
Source
139
37.3k
    fn clone(&self) -> Self {
140
37.3k
        SectionLimited {
141
37.3k
            reader: self.reader.clone(),
142
37.3k
            count: self.count,
143
37.3k
            _marker: self._marker,
144
37.3k
        }
145
37.3k
    }
<wasmparser::readers::SectionLimited<u32> as core::clone::Clone>::clone
Line
Count
Source
139
39.1k
    fn clone(&self) -> Self {
140
39.1k
        SectionLimited {
141
39.1k
            reader: self.reader.clone(),
142
39.1k
            count: self.count,
143
39.1k
            _marker: self._marker,
144
39.1k
        }
145
39.1k
    }
146
}
147
148
impl<T> fmt::Debug for SectionLimited<'_, T> {
149
0
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
150
0
        f.debug_struct("SectionLimited")
151
0
            .field("count", &self.count)
152
0
            .field("range", &self.range())
153
0
            .finish()
154
0
    }
155
}
156
157
impl<'a, T> IntoIterator for SectionLimited<'a, T>
158
where
159
    T: FromReader<'a>,
160
{
161
    type Item = Result<T>;
162
    type IntoIter = SectionLimitedIntoIter<'a, T>;
163
164
1.20M
    fn into_iter(self) -> Self::IntoIter {
165
1.20M
        SectionLimitedIntoIter {
166
1.20M
            remaining: self.count,
167
1.20M
            section: self,
168
1.20M
            end: false,
169
1.20M
        }
170
1.20M
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::branch_hinting::BranchHint> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::branch_hinting::BranchHintFunction> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::IndirectNaming> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::Naming> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersField> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersFieldValue> as core::iter::traits::collect::IntoIterator>::into_iter
<wasmparser::readers::SectionLimited<wasmparser::readers::core::code::FunctionBody> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
14.0k
    fn into_iter(self) -> Self::IntoIter {
165
14.0k
        SectionLimitedIntoIter {
166
14.0k
            remaining: self.count,
167
14.0k
            section: self,
168
14.0k
            end: false,
169
14.0k
        }
170
14.0k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::IndirectNaming> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::Naming> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::IndirectNaming> as core::iter::traits::collect::IntoIterator>::into_iter
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::core::names::Naming> as core::iter::traits::collect::IntoIterator>::into_iter
<wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersField> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
12.5k
    fn into_iter(self) -> Self::IntoIter {
165
12.5k
        SectionLimitedIntoIter {
166
12.5k
            remaining: self.count,
167
12.5k
            section: self,
168
12.5k
            end: false,
169
12.5k
        }
170
12.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::producers::ProducersFieldValue> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
12.5k
    fn into_iter(self) -> Self::IntoIter {
165
12.5k
        SectionLimitedIntoIter {
166
12.5k
            remaining: self.count,
167
12.5k
            section: self,
168
12.5k
            end: false,
169
12.5k
        }
170
12.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::data::Data> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
7.54k
    fn into_iter(self) -> Self::IntoIter {
165
7.54k
        SectionLimitedIntoIter {
166
7.54k
            remaining: self.count,
167
7.54k
            section: self,
168
7.54k
            end: false,
169
7.54k
        }
170
7.54k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::init::ConstExpr> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
31.3k
    fn into_iter(self) -> Self::IntoIter {
165
31.3k
        SectionLimitedIntoIter {
166
31.3k
            remaining: self.count,
167
31.3k
            section: self,
168
31.3k
            end: false,
169
31.3k
        }
170
31.3k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::MemoryType> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
34.2k
    fn into_iter(self) -> Self::IntoIter {
165
34.2k
        SectionLimitedIntoIter {
166
34.2k
            remaining: self.count,
167
34.2k
            section: self,
168
34.2k
            end: false,
169
34.2k
        }
170
34.2k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::TagType> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
1.86k
    fn into_iter(self) -> Self::IntoIter {
165
1.86k
        SectionLimitedIntoIter {
166
1.86k
            remaining: self.count,
167
1.86k
            section: self,
168
1.86k
            end: false,
169
1.86k
        }
170
1.86k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::types::RecGroup> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
67.6k
    fn into_iter(self) -> Self::IntoIter {
165
67.6k
        SectionLimitedIntoIter {
166
67.6k
            remaining: self.count,
167
67.6k
            section: self,
168
67.6k
            end: false,
169
67.6k
        }
170
67.6k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::tables::Table> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
18.4k
    fn into_iter(self) -> Self::IntoIter {
165
18.4k
        SectionLimitedIntoIter {
166
18.4k
            remaining: self.count,
167
18.4k
            section: self,
168
18.4k
            end: false,
169
18.4k
        }
170
18.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::exports::Export> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
43.1k
    fn into_iter(self) -> Self::IntoIter {
165
43.1k
        SectionLimitedIntoIter {
166
43.1k
            remaining: self.count,
167
43.1k
            section: self,
168
43.1k
            end: false,
169
43.1k
        }
170
43.1k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::globals::Global> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
30.4k
    fn into_iter(self) -> Self::IntoIter {
165
30.4k
        SectionLimitedIntoIter {
166
30.4k
            remaining: self.count,
167
30.4k
            section: self,
168
30.4k
            end: false,
169
30.4k
        }
170
30.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::imports::Import> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
44.4k
    fn into_iter(self) -> Self::IntoIter {
165
44.4k
        SectionLimitedIntoIter {
166
44.4k
            remaining: self.count,
167
44.4k
            section: self,
168
44.4k
            end: false,
169
44.4k
        }
170
44.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::core::elements::Element> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
12.0k
    fn into_iter(self) -> Self::IntoIter {
165
12.0k
        SectionLimitedIntoIter {
166
12.0k
            remaining: self.count,
167
12.0k
            section: self,
168
12.0k
            end: false,
169
12.0k
        }
170
12.0k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::canonicals::CanonicalFunction> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
77.5k
    fn into_iter(self) -> Self::IntoIter {
165
77.5k
        SectionLimitedIntoIter {
166
77.5k
            remaining: self.count,
167
77.5k
            section: self,
168
77.5k
            end: false,
169
77.5k
        }
170
77.5k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::types::ComponentType> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
237k
    fn into_iter(self) -> Self::IntoIter {
165
237k
        SectionLimitedIntoIter {
166
237k
            remaining: self.count,
167
237k
            section: self,
168
237k
            end: false,
169
237k
        }
170
237k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimited<wasmparser::readers::component::types::CoreType> as core::iter::traits::collect::IntoIterator>::into_iter
<wasmparser::readers::SectionLimited<wasmparser::readers::component::aliases::ComponentAlias> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
97.9k
    fn into_iter(self) -> Self::IntoIter {
165
97.9k
        SectionLimitedIntoIter {
166
97.9k
            remaining: self.count,
167
97.9k
            section: self,
168
97.9k
            end: false,
169
97.9k
        }
170
97.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::exports::ComponentExport> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
248k
    fn into_iter(self) -> Self::IntoIter {
165
248k
        SectionLimitedIntoIter {
166
248k
            remaining: self.count,
167
248k
            section: self,
168
248k
            end: false,
169
248k
        }
170
248k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::imports::ComponentImport> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
66.9k
    fn into_iter(self) -> Self::IntoIter {
165
66.9k
        SectionLimitedIntoIter {
166
66.9k
            remaining: self.count,
167
66.9k
            section: self,
168
66.9k
            end: false,
169
66.9k
        }
170
66.9k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::ComponentInstance> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
19.4k
    fn into_iter(self) -> Self::IntoIter {
165
19.4k
        SectionLimitedIntoIter {
166
19.4k
            remaining: self.count,
167
19.4k
            section: self,
168
19.4k
            end: false,
169
19.4k
        }
170
19.4k
    }
<wasmparser::readers::SectionLimited<wasmparser::readers::component::instances::Instance> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
37.3k
    fn into_iter(self) -> Self::IntoIter {
165
37.3k
        SectionLimitedIntoIter {
166
37.3k
            remaining: self.count,
167
37.3k
            section: self,
168
37.3k
            end: false,
169
37.3k
        }
170
37.3k
    }
<wasmparser::readers::SectionLimited<u32> as core::iter::traits::collect::IntoIterator>::into_iter
Line
Count
Source
164
85.9k
    fn into_iter(self) -> Self::IntoIter {
165
85.9k
        SectionLimitedIntoIter {
166
85.9k
            remaining: self.count,
167
85.9k
            section: self,
168
85.9k
            end: false,
169
85.9k
        }
170
85.9k
    }
171
}
172
173
/// A consuming iterator of a [`SectionLimited`].
174
///
175
/// This is created via the [`IntoIterator`] `impl` for the [`SectionLimited`]
176
/// type.
177
pub struct SectionLimitedIntoIter<'a, T> {
178
    section: SectionLimited<'a, T>,
179
    remaining: u32,
180
    end: bool,
181
}
182
183
impl<T> SectionLimitedIntoIter<'_, T> {
184
    /// Returns the current byte offset of the section within this iterator.
185
0
    pub fn original_position(&self) -> usize {
186
0
        self.section.reader.original_position()
187
0
    }
188
}
189
190
impl<'a, T> Iterator for SectionLimitedIntoIter<'a, T>
191
where
192
    T: FromReader<'a>,
193
{
194
    type Item = Result<T>;
195
196
5.56M
    fn next(&mut self) -> Option<Result<T>> {
197
5.56M
        if self.end {
198
0
            return None;
199
5.56M
        }
200
5.56M
        if self.remaining == 0 {
201
1.20M
            self.end = true;
202
1.20M
            if self.section.reader.eof() {
203
1.20M
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
4.35M
        }
210
4.35M
        let result = self.section.reader.read();
211
4.35M
        self.end = result.is_err();
212
4.35M
        self.remaining -= 1;
213
4.35M
        Some(result)
214
5.56M
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::branch_hinting::BranchHint> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::branch_hinting::BranchHintFunction> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::names::IndirectNaming> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::names::Naming> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::producers::ProducersField> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::producers::ProducersFieldValue> as core::iter::traits::iterator::Iterator>::next
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::code::FunctionBody> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
179k
    fn next(&mut self) -> Option<Result<T>> {
197
179k
        if self.end {
198
0
            return None;
199
179k
        }
200
179k
        if self.remaining == 0 {
201
14.0k
            self.end = true;
202
14.0k
            if self.section.reader.eof() {
203
14.0k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
165k
        }
210
165k
        let result = self.section.reader.read();
211
165k
        self.end = result.is_err();
212
165k
        self.remaining -= 1;
213
165k
        Some(result)
214
179k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::names::IndirectNaming> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::names::Naming> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::names::IndirectNaming> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::names::Naming> as core::iter::traits::iterator::Iterator>::next
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::producers::ProducersField> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
25.0k
    fn next(&mut self) -> Option<Result<T>> {
197
25.0k
        if self.end {
198
0
            return None;
199
25.0k
        }
200
25.0k
        if self.remaining == 0 {
201
12.5k
            self.end = true;
202
12.5k
            if self.section.reader.eof() {
203
12.5k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
12.5k
        }
210
12.5k
        let result = self.section.reader.read();
211
12.5k
        self.end = result.is_err();
212
12.5k
        self.remaining -= 1;
213
12.5k
        Some(result)
214
25.0k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::producers::ProducersFieldValue> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
25.0k
    fn next(&mut self) -> Option<Result<T>> {
197
25.0k
        if self.end {
198
0
            return None;
199
25.0k
        }
200
25.0k
        if self.remaining == 0 {
201
12.5k
            self.end = true;
202
12.5k
            if self.section.reader.eof() {
203
12.5k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
12.5k
        }
210
12.5k
        let result = self.section.reader.read();
211
12.5k
        self.end = result.is_err();
212
12.5k
        self.remaining -= 1;
213
12.5k
        Some(result)
214
25.0k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::data::Data> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
57.9k
    fn next(&mut self) -> Option<Result<T>> {
197
57.9k
        if self.end {
198
0
            return None;
199
57.9k
        }
200
57.9k
        if self.remaining == 0 {
201
7.54k
            self.end = true;
202
7.54k
            if self.section.reader.eof() {
203
7.54k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
50.3k
        }
210
50.3k
        let result = self.section.reader.read();
211
50.3k
        self.end = result.is_err();
212
50.3k
        self.remaining -= 1;
213
50.3k
        Some(result)
214
57.9k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::init::ConstExpr> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
487k
    fn next(&mut self) -> Option<Result<T>> {
197
487k
        if self.end {
198
0
            return None;
199
487k
        }
200
487k
        if self.remaining == 0 {
201
31.3k
            self.end = true;
202
31.3k
            if self.section.reader.eof() {
203
31.3k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
456k
        }
210
456k
        let result = self.section.reader.read();
211
456k
        self.end = result.is_err();
212
456k
        self.remaining -= 1;
213
456k
        Some(result)
214
487k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::types::MemoryType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
147k
    fn next(&mut self) -> Option<Result<T>> {
197
147k
        if self.end {
198
0
            return None;
199
147k
        }
200
147k
        if self.remaining == 0 {
201
34.2k
            self.end = true;
202
34.2k
            if self.section.reader.eof() {
203
34.2k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
113k
        }
210
113k
        let result = self.section.reader.read();
211
113k
        self.end = result.is_err();
212
113k
        self.remaining -= 1;
213
113k
        Some(result)
214
147k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::types::TagType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
45.9k
    fn next(&mut self) -> Option<Result<T>> {
197
45.9k
        if self.end {
198
0
            return None;
199
45.9k
        }
200
45.9k
        if self.remaining == 0 {
201
1.86k
            self.end = true;
202
1.86k
            if self.section.reader.eof() {
203
1.86k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
44.1k
        }
210
44.1k
        let result = self.section.reader.read();
211
44.1k
        self.end = result.is_err();
212
44.1k
        self.remaining -= 1;
213
44.1k
        Some(result)
214
45.9k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::types::RecGroup> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
428k
    fn next(&mut self) -> Option<Result<T>> {
197
428k
        if self.end {
198
0
            return None;
199
428k
        }
200
428k
        if self.remaining == 0 {
201
67.0k
            self.end = true;
202
67.0k
            if self.section.reader.eof() {
203
67.0k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
361k
        }
210
361k
        let result = self.section.reader.read();
211
361k
        self.end = result.is_err();
212
361k
        self.remaining -= 1;
213
361k
        Some(result)
214
428k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::tables::Table> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
83.7k
    fn next(&mut self) -> Option<Result<T>> {
197
83.7k
        if self.end {
198
0
            return None;
199
83.7k
        }
200
83.7k
        if self.remaining == 0 {
201
18.4k
            self.end = true;
202
18.4k
            if self.section.reader.eof() {
203
18.4k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
65.3k
        }
210
65.3k
        let result = self.section.reader.read();
211
65.3k
        self.end = result.is_err();
212
65.3k
        self.remaining -= 1;
213
65.3k
        Some(result)
214
83.7k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::exports::Export> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
479k
    fn next(&mut self) -> Option<Result<T>> {
197
479k
        if self.end {
198
0
            return None;
199
479k
        }
200
479k
        if self.remaining == 0 {
201
43.1k
            self.end = true;
202
43.1k
            if self.section.reader.eof() {
203
43.1k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
436k
        }
210
436k
        let result = self.section.reader.read();
211
436k
        self.end = result.is_err();
212
436k
        self.remaining -= 1;
213
436k
        Some(result)
214
479k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::globals::Global> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
280k
    fn next(&mut self) -> Option<Result<T>> {
197
280k
        if self.end {
198
0
            return None;
199
280k
        }
200
280k
        if self.remaining == 0 {
201
30.4k
            self.end = true;
202
30.4k
            if self.section.reader.eof() {
203
30.4k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
250k
        }
210
250k
        let result = self.section.reader.read();
211
250k
        self.end = result.is_err();
212
250k
        self.remaining -= 1;
213
250k
        Some(result)
214
280k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::imports::Import> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
443k
    fn next(&mut self) -> Option<Result<T>> {
197
443k
        if self.end {
198
0
            return None;
199
443k
        }
200
443k
        if self.remaining == 0 {
201
44.4k
            self.end = true;
202
44.4k
            if self.section.reader.eof() {
203
44.4k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
399k
        }
210
399k
        let result = self.section.reader.read();
211
399k
        self.end = result.is_err();
212
399k
        self.remaining -= 1;
213
399k
        Some(result)
214
443k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::elements::Element> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
82.4k
    fn next(&mut self) -> Option<Result<T>> {
197
82.4k
        if self.end {
198
0
            return None;
199
82.4k
        }
200
82.4k
        if self.remaining == 0 {
201
12.0k
            self.end = true;
202
12.0k
            if self.section.reader.eof() {
203
12.0k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
70.3k
        }
210
70.3k
        let result = self.section.reader.read();
211
70.3k
        self.end = result.is_err();
212
70.3k
        self.remaining -= 1;
213
70.3k
        Some(result)
214
82.4k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::canonicals::CanonicalFunction> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
176k
    fn next(&mut self) -> Option<Result<T>> {
197
176k
        if self.end {
198
0
            return None;
199
176k
        }
200
176k
        if self.remaining == 0 {
201
77.5k
            self.end = true;
202
77.5k
            if self.section.reader.eof() {
203
77.5k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
98.5k
        }
210
98.5k
        let result = self.section.reader.read();
211
98.5k
        self.end = result.is_err();
212
98.5k
        self.remaining -= 1;
213
98.5k
        Some(result)
214
176k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::types::ComponentType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
609k
    fn next(&mut self) -> Option<Result<T>> {
197
609k
        if self.end {
198
0
            return None;
199
609k
        }
200
609k
        if self.remaining == 0 {
201
237k
            self.end = true;
202
237k
            if self.section.reader.eof() {
203
237k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
372k
        }
210
372k
        let result = self.section.reader.read();
211
372k
        self.end = result.is_err();
212
372k
        self.remaining -= 1;
213
372k
        Some(result)
214
609k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::types::CoreType> as core::iter::traits::iterator::Iterator>::next
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::aliases::ComponentAlias> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
272k
    fn next(&mut self) -> Option<Result<T>> {
197
272k
        if self.end {
198
0
            return None;
199
272k
        }
200
272k
        if self.remaining == 0 {
201
97.9k
            self.end = true;
202
97.9k
            if self.section.reader.eof() {
203
97.9k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
174k
        }
210
174k
        let result = self.section.reader.read();
211
174k
        self.end = result.is_err();
212
174k
        self.remaining -= 1;
213
174k
        Some(result)
214
272k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::exports::ComponentExport> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
520k
    fn next(&mut self) -> Option<Result<T>> {
197
520k
        if self.end {
198
0
            return None;
199
520k
        }
200
520k
        if self.remaining == 0 {
201
248k
            self.end = true;
202
248k
            if self.section.reader.eof() {
203
248k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
271k
        }
210
271k
        let result = self.section.reader.read();
211
271k
        self.end = result.is_err();
212
271k
        self.remaining -= 1;
213
271k
        Some(result)
214
520k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::imports::ComponentImport> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
165k
    fn next(&mut self) -> Option<Result<T>> {
197
165k
        if self.end {
198
0
            return None;
199
165k
        }
200
165k
        if self.remaining == 0 {
201
66.9k
            self.end = true;
202
66.9k
            if self.section.reader.eof() {
203
66.9k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
98.1k
        }
210
98.1k
        let result = self.section.reader.read();
211
98.1k
        self.end = result.is_err();
212
98.1k
        self.remaining -= 1;
213
98.1k
        Some(result)
214
165k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::instances::ComponentInstance> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
38.8k
    fn next(&mut self) -> Option<Result<T>> {
197
38.8k
        if self.end {
198
0
            return None;
199
38.8k
        }
200
38.8k
        if self.remaining == 0 {
201
19.4k
            self.end = true;
202
19.4k
            if self.section.reader.eof() {
203
19.4k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
19.4k
        }
210
19.4k
        let result = self.section.reader.read();
211
19.4k
        self.end = result.is_err();
212
19.4k
        self.remaining -= 1;
213
19.4k
        Some(result)
214
38.8k
    }
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::component::instances::Instance> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
97.0k
    fn next(&mut self) -> Option<Result<T>> {
197
97.0k
        if self.end {
198
0
            return None;
199
97.0k
        }
200
97.0k
        if self.remaining == 0 {
201
37.3k
            self.end = true;
202
37.3k
            if self.section.reader.eof() {
203
37.3k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
59.7k
        }
210
59.7k
        let result = self.section.reader.read();
211
59.7k
        self.end = result.is_err();
212
59.7k
        self.remaining -= 1;
213
59.7k
        Some(result)
214
97.0k
    }
<wasmparser::readers::SectionLimitedIntoIter<u32> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
196
912k
    fn next(&mut self) -> Option<Result<T>> {
197
912k
        if self.end {
198
0
            return None;
199
912k
        }
200
912k
        if self.remaining == 0 {
201
85.9k
            self.end = true;
202
85.9k
            if self.section.reader.eof() {
203
85.9k
                return None;
204
0
            }
205
0
            return Some(Err(BinaryReaderError::new(
206
0
                "section size mismatch: unexpected data at the end of the section",
207
0
                self.section.reader.original_position(),
208
0
            )));
209
826k
        }
210
826k
        let result = self.section.reader.read();
211
826k
        self.end = result.is_err();
212
826k
        self.remaining -= 1;
213
826k
        Some(result)
214
912k
    }
215
216
2.80k
    fn size_hint(&self) -> (usize, Option<usize>) {
217
2.80k
        let remaining = self.remaining as usize;
218
2.80k
        (remaining, Some(remaining))
219
2.80k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::branch_hinting::BranchHint> as core::iter::traits::iterator::Iterator>::size_hint
<wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::code::FunctionBody> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
216
2.80k
    fn size_hint(&self) -> (usize, Option<usize>) {
217
2.80k
        let remaining = self.remaining as usize;
218
2.80k
        (remaining, Some(remaining))
219
2.80k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::types::RecGroup> as core::iter::traits::iterator::Iterator>::size_hint
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<wasmparser::readers::core::exports::Export> as core::iter::traits::iterator::Iterator>::size_hint
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIter<_> as core::iter::traits::iterator::Iterator>::size_hint
220
}
221
222
impl<'a, T> ExactSizeIterator for SectionLimitedIntoIter<'a, T> where T: FromReader<'a> {}
223
224
/// An iterator over a limited section iterator.
225
pub struct SectionLimitedIntoIterWithOffsets<'a, T> {
226
    iter: SectionLimitedIntoIter<'a, T>,
227
}
228
229
impl<'a, T> Iterator for SectionLimitedIntoIterWithOffsets<'a, T>
230
where
231
    T: FromReader<'a>,
232
{
233
    type Item = Result<(usize, T)>;
234
235
3.96M
    fn next(&mut self) -> Option<Self::Item> {
236
3.96M
        let pos = self.iter.section.reader.original_position();
237
3.96M
        Some(self.iter.next()?.map(|item| (pos, item)))
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::branch_hinting::BranchHint> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::producers::ProducersFieldValue> as core::iter::traits::iterator::Iterator>::next::{closure#0}
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::data::Data> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
46.2k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::MemoryType> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
97.6k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::TagType> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
36.0k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::RecGroup> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
335k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::tables::Table> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
53.3k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::exports::Export> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
338k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::globals::Global> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
164k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::imports::Import> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
294k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::elements::Element> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
59.8k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::canonicals::CanonicalFunction> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
98.5k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::types::ComponentType> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
372k
        Some(self.iter.next()?.map(|item| (pos, item)))
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::types::CoreType> as core::iter::traits::iterator::Iterator>::next::{closure#0}
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::aliases::ComponentAlias> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
174k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::exports::ComponentExport> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
210k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::imports::ComponentImport> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
82.5k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::instances::ComponentInstance> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
19.4k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::instances::Instance> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
59.7k
        Some(self.iter.next()?.map(|item| (pos, item)))
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<u32> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
237
525k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
3.96M
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::branch_hinting::BranchHint> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::producers::ProducersFieldValue> as core::iter::traits::iterator::Iterator>::next
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::data::Data> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
53.1k
    fn next(&mut self) -> Option<Self::Item> {
236
53.1k
        let pos = self.iter.section.reader.original_position();
237
53.1k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
53.1k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::MemoryType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
129k
    fn next(&mut self) -> Option<Self::Item> {
236
129k
        let pos = self.iter.section.reader.original_position();
237
129k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
129k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::TagType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
37.7k
    fn next(&mut self) -> Option<Self::Item> {
236
37.7k
        let pos = self.iter.section.reader.original_position();
237
37.7k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
37.7k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::RecGroup> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
400k
    fn next(&mut self) -> Option<Self::Item> {
236
400k
        let pos = self.iter.section.reader.original_position();
237
400k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
400k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::tables::Table> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
69.3k
    fn next(&mut self) -> Option<Self::Item> {
236
69.3k
        let pos = self.iter.section.reader.original_position();
237
69.3k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
69.3k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::exports::Export> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
372k
    fn next(&mut self) -> Option<Self::Item> {
236
372k
        let pos = self.iter.section.reader.original_position();
237
372k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
372k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::globals::Global> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
183k
    fn next(&mut self) -> Option<Self::Item> {
236
183k
        let pos = self.iter.section.reader.original_position();
237
183k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
183k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::imports::Import> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
332k
    fn next(&mut self) -> Option<Self::Item> {
236
332k
        let pos = self.iter.section.reader.original_position();
237
332k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
332k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::elements::Element> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
71.2k
    fn next(&mut self) -> Option<Self::Item> {
236
71.2k
        let pos = self.iter.section.reader.original_position();
237
71.2k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
71.2k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::canonicals::CanonicalFunction> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
176k
    fn next(&mut self) -> Option<Self::Item> {
236
176k
        let pos = self.iter.section.reader.original_position();
237
176k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
176k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::types::ComponentType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
609k
    fn next(&mut self) -> Option<Self::Item> {
236
609k
        let pos = self.iter.section.reader.original_position();
237
609k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
609k
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::types::CoreType> as core::iter::traits::iterator::Iterator>::next
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::aliases::ComponentAlias> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
272k
    fn next(&mut self) -> Option<Self::Item> {
236
272k
        let pos = self.iter.section.reader.original_position();
237
272k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
272k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::exports::ComponentExport> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
396k
    fn next(&mut self) -> Option<Self::Item> {
236
396k
        let pos = self.iter.section.reader.original_position();
237
396k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
396k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::imports::ComponentImport> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
137k
    fn next(&mut self) -> Option<Self::Item> {
236
137k
        let pos = self.iter.section.reader.original_position();
237
137k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
137k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::instances::ComponentInstance> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
38.8k
    fn next(&mut self) -> Option<Self::Item> {
236
38.8k
        let pos = self.iter.section.reader.original_position();
237
38.8k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
38.8k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::component::instances::Instance> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
97.0k
    fn next(&mut self) -> Option<Self::Item> {
236
97.0k
        let pos = self.iter.section.reader.original_position();
237
97.0k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
97.0k
    }
<wasmparser::readers::SectionLimitedIntoIterWithOffsets<u32> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
235
590k
    fn next(&mut self) -> Option<Self::Item> {
236
590k
        let pos = self.iter.section.reader.original_position();
237
590k
        Some(self.iter.next()?.map(|item| (pos, item)))
238
590k
    }
239
240
0
    fn size_hint(&self) -> (usize, Option<usize>) {
241
0
        self.iter.size_hint()
242
0
    }
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::branch_hinting::BranchHint> as core::iter::traits::iterator::Iterator>::size_hint
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<wasmparser::readers::core::types::RecGroup> as core::iter::traits::iterator::Iterator>::size_hint
Unexecuted instantiation: <wasmparser::readers::SectionLimitedIntoIterWithOffsets<_> as core::iter::traits::iterator::Iterator>::size_hint
243
}
244
245
impl<'a, T> ExactSizeIterator for SectionLimitedIntoIterWithOffsets<'a, T> where T: FromReader<'a> {}
246
247
/// A trait implemented for subsections of another outer section.
248
///
249
/// This is currently only used for subsections within custom sections, such as
250
/// the `name` section of core wasm.
251
///
252
/// This is used in conjunction with [`Subsections`].
253
pub trait Subsection<'a>: Sized {
254
    /// Converts the section identifier provided with the section contents into
255
    /// a typed section
256
    fn from_reader(id: u8, reader: BinaryReader<'a>) -> Result<Self>;
257
}
258
259
/// Iterator/reader over the contents of a section which is composed of
260
/// subsections.
261
///
262
/// This reader is used for the core `name` section, for example. This type
263
/// primarily implements [`Iterator`] for advancing through the sections.
264
pub struct Subsections<'a, T> {
265
    reader: BinaryReader<'a>,
266
    _marker: marker::PhantomData<T>,
267
}
268
269
impl<'a, T> Subsections<'a, T> {
270
    /// Creates a new reader for the specified section contents starting at
271
    /// `offset` within the original wasm file.
272
0
    pub fn new(reader: BinaryReader<'a>) -> Self {
273
0
        Subsections {
274
0
            reader,
275
0
            _marker: marker::PhantomData,
276
0
        }
277
0
    }
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name>>::new
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::dylink0::Dylink0Subsection>>::new
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::linking::Linking>>::new
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::component::names::ComponentName>>::new
278
279
    /// Returns whether the original byte offset of this section.
280
0
    pub fn original_position(&self) -> usize {
281
0
        self.reader.original_position()
282
0
    }
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::dylink0::Dylink0Subsection>>::original_position
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::linking::Linking>>::original_position
283
284
    /// Returns the range, as byte offsets, of this section within the original
285
    /// wasm binary.
286
0
    pub fn range(&self) -> Range<usize> {
287
0
        self.reader.range()
288
0
    }
289
290
0
    fn read(&mut self) -> Result<T>
291
0
    where
292
0
        T: Subsection<'a>,
293
0
    {
294
0
        let subsection_id = self.reader.read_u7()?;
295
0
        let reader = self.reader.read_reader()?;
296
0
        T::from_reader(subsection_id, reader)
297
0
    }
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::dylink0::Dylink0Subsection>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::component::names::ComponentName>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::dylink0::Dylink0Subsection>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::component::names::ComponentName>>::read
Unexecuted instantiation: <wasmparser::readers::Subsections<_>>::read
298
}
299
300
impl<T> Clone for Subsections<'_, T> {
301
0
    fn clone(&self) -> Self {
302
0
        Subsections {
303
0
            reader: self.reader.clone(),
304
0
            _marker: self._marker,
305
0
        }
306
0
    }
307
}
308
309
impl<T> fmt::Debug for Subsections<'_, T> {
310
0
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
311
0
        f.debug_struct("Subsections")
312
0
            .field("range", &self.range())
313
0
            .finish()
314
0
    }
315
}
316
317
impl<'a, T> Iterator for Subsections<'a, T>
318
where
319
    T: Subsection<'a>,
320
{
321
    type Item = Result<T>;
322
323
0
    fn next(&mut self) -> Option<Result<T>> {
324
0
        if self.reader.eof() {
325
0
            None
326
        } else {
327
0
            Some(self.read())
328
        }
329
0
    }
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::dylink0::Dylink0Subsection> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::component::names::ComponentName> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::dylink0::Dylink0Subsection> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::core::names::Name> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<wasmparser::readers::component::names::ComponentName> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <wasmparser::readers::Subsections<_> as core::iter::traits::iterator::Iterator>::next
330
}