Skip to main content

CrawlSource

Struct CrawlSource 

Source
pub struct CrawlSource<F: Fetcher> { /* private fields */ }
Expand description

A recursive HTTP crawler over a Fetcher.

Implementations§

Source§

impl<F: Fetcher> CrawlSource<F>

Source

pub fn new(fetcher: F) -> Self

Create a crawler with default configuration.

Source

pub fn with_config(fetcher: F, config: CrawlConfig) -> Self

Create with explicit configuration.

Source

pub fn depth(self, max_depth: u16) -> Self

Set the crawl depth.

Source

pub fn max_pages(self, max_pages: usize) -> Self

Set the page cap.

Source

pub fn scope(self, scope: CrawlScope) -> Self

Set the crawl scope.

Source

pub fn min_delay(self, delay: Duration) -> Self

Set the polite inter-request delay.

Source

pub fn concurrency(self, concurrency: usize) -> Self

Set the maximum number of fetches in flight at once (clamped to ≥ 1).

Source

pub fn max_retries(self, max_retries: u32) -> Self

Set the per-page retry budget for retriable errors.

Source

pub fn respect_robots(self, respect: bool) -> Self

Fetch and honor robots.txt per host (opt-in).

Source

pub fn require_path(self, substring: impl Into<CompactString>) -> Self

Require that every followed link’s URL path contains substring (additive; all required substrings must be present). Confines the crawl to a sub-path.

Source

pub fn accept_extension(self, extension: impl AsRef<str>) -> Self

Only index pages whose URL path ends with extension (additive). Other pages are still crawled for links.

Source

pub fn index_path(self, substring: impl Into<CompactString>) -> Self

Only index pages whose URL path contains substring (additive). Other pages are still crawled for links — this narrows indexing, not crawling.

Source

pub fn validators( self, entries: impl IntoIterator<Item = (UrlKey, CompactString)>, ) -> Self

Provide known validators (If-None-Match) for conditional re-crawls.

Source

pub fn known_edges( self, entries: impl IntoIterator<Item = (UrlKey, Vec<Url>)>, ) -> Self

Provide previously indexed outbound links so 304 pages keep feeding the frontier.

Source

pub fn failed_count(&self) -> u32

Child pages that failed after retries during the most recent crawl.

Source

pub fn take_revalidated(&self) -> Vec<Url>

Drain the pages revalidated as unchanged (HTTP 304) during the most recent crawl. They transferred no body and yielded no Page, so this is the only place their revalidation is visible — a freshness tracker consumes it to record “checked, unchanged” against each URL.

Source

pub fn config(&self) -> &CrawlConfig

Read-only view of the configuration.

Trait Implementations§

Source§

impl<F: Debug + Fetcher> Debug for CrawlSource<F>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<F: Fetcher> Source for CrawlSource<F>

Source§

type Pages<'a> = impl Stream<Item = Result<Page<'a>, Error>> + Send + 'a where Self: 'a

The stream of discovered pages.
Source§

fn kind(&self) -> &'static str

A stable label for this source kind ("crawl", "fs").
Source§

fn discover<'a>(&'a self, root: &'a SourceRef) -> Self::Pages<'a>

Begin discovery from root.

Auto Trait Implementations§

§

impl<F> !Freeze for CrawlSource<F>

§

impl<F> RefUnwindSafe for CrawlSource<F>
where F: RefUnwindSafe,

§

impl<F> Send for CrawlSource<F>

§

impl<F> Sync for CrawlSource<F>

§

impl<F> Unpin for CrawlSource<F>
where F: Unpin,

§

impl<F> UnsafeUnpin for CrawlSource<F>
where F: UnsafeUnpin,

§

impl<F> UnwindSafe for CrawlSource<F>
where F: UnwindSafe,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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