baboon/
spiders.rs

1pub struct Spider{
2    name: String,
3    allowed_domains: Vec<String>,
4    start_urls: Vec<String>,
5}
6
7pub trait Crawable {
8    fn name(&self) -> &String;
9    fn allowed_domains(&self) -> &Vec<String>;
10    fn start_urls(&self) -> &Vec<String>;
11    fn start_requests(&self);
12}
13
14impl Spider{
15    pub fn new(name: String, allowed_domains: Vec<String>, start_urls: Vec<String>) -> Self{
16        Spider{
17            name,
18            allowed_domains,
19            start_urls
20        }
21    }
22}
23
24impl Crawable for Spider{
25    fn name(&self) -> &String {
26        &self.name
27    }
28    fn allowed_domains(&self) -> &Vec<String> {
29        &self.allowed_domains
30    }
31    fn start_urls(&self) -> &Vec<String> {
32        &self.start_urls
33    }
34    fn start_requests(&self) {
35        for url in &self.start_urls{
36            println!("Crawling URL: {}", url);
37        }
38    }
39}