ipflag 0.1.0

Human-friendly IP -> country flag display core (resolver-pluggable, no data bundled).
Documentation
/// Errors produced by IP Flag APIs.
///
/// This crate can fail in two ways:
/// 1) IP parsing fails (`InvalidIp`)
/// 2) The user-provided resolver fails (`Resolver`)
///
/// The resolver error type is generic so that each resolver can expose its own
/// error enum without being forced into a boxed error.
///
/// # Example
///
/// ```rust
/// use ipflag::{IpflagError, tag_ip, NoopResolver};
///
/// let err = tag_ip(&NoopResolver, "not-an-ip").unwrap_err();
/// match err {
///     IpflagError::InvalidIp(_) => {}
///     _ => panic!("expected InvalidIp"),
/// }
/// ```
#[derive(Debug)]
pub enum IpflagError<E> {
    /// Invalid IP string (failed to parse into `std::net::IpAddr`).
    InvalidIp(std::net::AddrParseError),

    /// Resolver-specific error. Only possible for public IPs, because the resolver
    /// is never called for private/special addresses.
    Resolver(E),
}