libmaxminddb-rs 0.1.0

Pure Rust MaxMind DB (MMDB) reader and writer with zero-copy borrowed decoding
Documentation
//! Shared fixture for focused lookup examples.

use std::error::Error;

use libmaxminddb_rs::{MetadataBuilder, MmdbEncode, Writer};

#[derive(MmdbEncode)]
struct SampleRecord<'a> {
    asn: u32,
    country: &'a str,
}

pub fn sample_bytes() -> Result<Vec<u8>, Box<dyn Error>> {
    let metadata = MetadataBuilder::new()
        .database_type("Lookup-Examples")
        .ip_version(6)
        .build()?;
    let mut writer = Writer::with_metadata(metadata);
    writer.insert_encoded(
        "198.51.100.0/24".parse()?,
        &SampleRecord {
            asn: 64513,
            country: "US",
        },
    )?;
    writer.insert_encoded(
        "2001:db8:1::/48".parse()?,
        &SampleRecord {
            asn: 64512,
            country: "FR",
        },
    )?;
    Ok(writer.finish()?)
}