1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mod dns;
mod http;

#[cfg(feature = "igd")]
mod igd;

mod interfaces;

pub use self::dns::{get_dns_sources, DNSSource, QueryType};
pub use self::http::{get_http_sources, HTTPSource};
#[cfg(feature = "igd")]
pub use self::igd::IGD;
pub use interfaces::*;

/// Returns a collection of all possible sources
pub fn get_sources<T>() -> T
where
    T: std::iter::FromIterator<Box<dyn Source>>,
{
    let h: Vec<_> = get_http_sources();
    let d: Vec<_> = get_dns_sources();

    let sources = h.into_iter().chain(d.into_iter());

    #[cfg(feature = "igd")]
    let sources = sources.chain(std::iter::once(IGD::source()));

    sources.into_iter().collect()
}