pub struct CrawlConfig {Show 14 fields
pub max_depth: u16,
pub scope: CrawlScope,
pub max_pages: usize,
pub min_delay: Duration,
pub max_bytes: Option<u64>,
pub user_agent: Option<CompactString>,
pub require_path_contains: Vec<CompactString>,
pub accept_extensions: Vec<CompactString>,
pub index_path_contains: Vec<CompactString>,
pub concurrency: usize,
pub max_retries: u32,
pub validators: HashMap<UrlKey, CompactString>,
pub known_edges: HashMap<UrlKey, Vec<Url>>,
pub respect_robots: bool,
}Expand description
Crawl configuration. Every field is honored; see CrawlSource builder methods.
Fields§
§max_depth: u16Maximum link depth from the root (root is depth 0).
scope: CrawlScopeWhich links to follow.
max_pages: usizeHard cap on total pages fetched (runaway guard).
min_delay: DurationPolite delay between fetches.
max_bytes: Option<u64>Per-page byte ceiling.
user_agent: Option<CompactString>User-Agent override.
require_path_contains: Vec<CompactString>A followed link’s URL path must contain all of these substrings (empty =
no constraint). Composes with CrawlConfig::scope: use it to confine a
crawl to a sub-path that the host’s URL scheme splits across segments (e.g.
GitHub’s /tree/ directories and /blob/ files both under /main/docs).
accept_extensions: Vec<CompactString>Only index pages whose URL path ends with one of these extensions, e.g.
["md"] (empty = index every indexable kind). Non-matching pages are still
crawled for links — only their indexing is filtered.
index_path_contains: Vec<CompactString>Only index pages whose URL path contains all of these substrings (empty =
no constraint). Independent of CrawlConfig::require_path_contains: follow
broadly, index narrowly — e.g. follow GitHub /tree/ dirs but index only the
canonical /blob/ file views, collapsing the /raw/,/commits/ duplicates.
concurrency: usizeMaximum fetches in flight at once (clamped to at least 1). Higher values
crawl faster; min_delay still paces request starts globally.
max_retries: u32Retry budget per page for retriable errors (timeouts, 429/5xx). Honors
Retry-After on rate limits; other retries back off exponentially.
validators: HashMap<UrlKey, CompactString>Known entity tags by canonical-URL key: fetches send If-None-Match
and a 304 skips the body transfer entirely (conditional re-crawl).
known_edges: HashMap<UrlKey, Vec<Url>>Known outbound links by canonical-URL key: when a page revalidates as unchanged (no body to parse), its previously indexed children keep the frontier going, so coverage never shrinks on a 304.
respect_robots: boolFetch and honor robots.txt per host (opt-in; requires the robots feature).
Trait Implementations§
Source§impl Clone for CrawlConfig
impl Clone for CrawlConfig
Source§impl Debug for CrawlConfig
impl Debug for CrawlConfig
Auto Trait Implementations§
impl Freeze for CrawlConfig
impl RefUnwindSafe for CrawlConfig
impl Send for CrawlConfig
impl Sync for CrawlConfig
impl Unpin for CrawlConfig
impl UnsafeUnpin for CrawlConfig
impl UnwindSafe for CrawlConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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