Skip to main content

Frontier

Struct Frontier 

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

Holds the URLs still to fetch. Never admits more than max_pages URLs to fetch in total (fetched plus queued), so memory stays flat on endless URL spaces. Redirect targets are remembered past the cap but never queued, so records stay at most 2 × max_pages.

Levels are a barrier: pop only returns URLs of the current level, and the next level becomes current when the caller asks with advance. Sitemap-only URLs come last.

Implementations§

Source§

impl Frontier

Source

pub fn new(max_pages: u32) -> Frontier

Source

pub fn seed(&mut self, url: Url) -> bool

Queues the start URL at depth 0. False when it was seen already or the cap is reached.

Queues a link found on a page at from_depth for the next level.

Source

pub fn admit_redirect_target(&mut self, url: &Url) -> bool

Marks a redirect target as seen without queueing or counting it: its record is built from the response that already arrived, so it costs no fetch. The cap does not apply (it bounds fetches), but a URL already seen is refused.

Source

pub fn add_sitemap_urls(&mut self, urls: impl IntoIterator<Item = Url>)

Queues sitemap URLs that nothing linked to; they are fetched after link exploration.

Source

pub fn pop(&mut self) -> Option<Queued>

The next URL of the current level.

Source

pub fn advance(&mut self) -> bool

Starts the next level. When link exploration is over, starts the sitemap-only URLs (once). False when nothing is left.

Source

pub fn requeue_front(&mut self, q: Queued)

Puts a URL back at the front of the current level (a 429/503 retry). It was counted when it was first queued and is not counted again.

Source

pub fn is_seen(&self, url: &Url) -> bool

Source

pub fn capped(&self) -> bool

True once a URL was refused because the cap was reached.

Source

pub fn queued(&self) -> usize

URLs waiting to be fetched, in every queue.

Trait Implementations§

Source§

impl Debug for Frontier

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more