Struct js_source_scopes::ScopeIndex
source · [−]pub struct ScopeIndex { /* private fields */ }
Expand description
An indexed structure of scopes that allows quick lookup by byte offset.
Construction of the index will validate that the scopes are well nested and
parents fully contain their children. A list of scopes that are not well
nested will result in an Err
on construction.
Examples
use js_source_scopes::{ScopeIndex, ScopeLookupResult};
let scopes = vec![
(5..25, Some(String::from("parent"))),
(10..15, Some(String::from("child"))),
(20..25, Some(String::from("child2"))),
(30..50, None),
];
let idx = ScopeIndex::new(scopes).unwrap();
assert_eq!(idx.lookup(3), ScopeLookupResult::Unknown);
assert_eq!(idx.lookup(12), ScopeLookupResult::NamedScope("child"));
assert_eq!(idx.lookup(40), ScopeLookupResult::AnonymousScope);
Implementations
sourceimpl ScopeIndex
impl ScopeIndex
sourcepub fn new(
scopes: Vec<(Range<u32>, Option<String>)>
) -> Result<Self, ScopeIndexError>
pub fn new(
scopes: Vec<(Range<u32>, Option<String>)>
) -> Result<Self, ScopeIndexError>
Creates a new Scope index from the given list of Scopes.
sourcepub fn lookup(&self, offset: u32) -> ScopeLookupResult<'_>
pub fn lookup(&self, offset: u32) -> ScopeLookupResult<'_>
Looks up the scope corresponding to the given offset
.
sourcepub fn iter(&self) -> impl Iterator<Item = (u32, ScopeLookupResult<'_>)>
pub fn iter(&self) -> impl Iterator<Item = (u32, ScopeLookupResult<'_>)>
Returns an iterator over the scopes in this index and their starting offsets.
Scopes are returned in order of their starting offsets.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for ScopeIndex
impl Send for ScopeIndex
impl Sync for ScopeIndex
impl Unpin for ScopeIndex
impl UnwindSafe for ScopeIndex
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more