Skip to main content

GeoipDb

Struct GeoipDb 

Source
pub struct GeoipDb {
    pub(crate) map_v4: DenseRangeMap<u32, CountryCode, NonZeroU32>,
    pub(crate) map_v6: DenseRangeMap<u128, CountryCode, NonZeroU32>,
}
Expand description

A database of IP addresses to country codes.

Fields§

§map_v4: DenseRangeMap<u32, CountryCode, NonZeroU32>

The IPv4 subset of the database, with v4 addresses stored as 32-bit integers.

§map_v6: DenseRangeMap<u128, CountryCode, NonZeroU32>

The IPv6 subset of the database, with v6 addresses stored as 128-bit integers.

Implementations§

Source§

impl GeoipDb

Source

pub fn new_embedded() -> Arc<Self>

Make a new GeoipDb using a compiled-in copy of the GeoIP database.

The returned instance of the database is shared with Arc across all invocations of this function in the same program.

Source

pub fn new_from_legacy_format( db_v4: &str, db_v6: &str, include_asn: bool, ) -> Result<Self, Error>

Make a new GeoipDb using provided copies of the v4 and v6 database, in Tor legacy format.

Source

pub fn export_raw(&self) -> RawGeoipDbExport<'_>

Return the database in a raw format suitable for embedding.

This method and the format it returns are unstable. This method should only be used for maintaining the database.

Source

pub fn lookup_country_code(&self, ip: IpAddr) -> Option<&CountryCode>

Get a 2-letter country code for the given IP address, if this data is available.

Source

pub fn lookup_country_code_multi<I>(&self, ips: I) -> Option<&CountryCode>
where I: IntoIterator<Item = IpAddr>,

Determine a 2-letter country code for a host with multiple IP addresses.

This looks up all of the IP addresses with lookup_country_code. If the lookups return different countries, None is returned. IP addresses that fail to resolve into a country are ignored if some of the other addresses do resolve successfully.

Source

pub fn lookup_asn(&self, ip: IpAddr) -> Option<u32>

Return the ASN the IP address is in, if this data is available.

Trait Implementations§

Source§

impl Clone for GeoipDb

Source§

fn clone(&self) -> GeoipDb

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GeoipDb

Source§

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

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

impl Eq for GeoipDb

Source§

impl PartialEq for GeoipDb

Source§

fn eq(&self, other: &GeoipDb) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for GeoipDb

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.