Skip to main content

cairn_parse/
lib.rs

1//! Address parsing + normalization.
2//!
3//! Phase 0 stub. Phase 4 wires libpostal via FFI behind the `libpostal` feature.
4
5#![allow(dead_code)]
6
7use serde::{Deserialize, Serialize};
8use thiserror::Error;
9
10#[derive(Debug, Error)]
11pub enum ParseError {
12    #[error("libpostal not initialized")]
13    NotInitialized,
14}
15
16#[derive(Clone, Debug, Default, Serialize, Deserialize)]
17pub struct ParsedAddress {
18    pub house_number: Option<String>,
19    pub road: Option<String>,
20    pub unit: Option<String>,
21    pub postcode: Option<String>,
22    pub city: Option<String>,
23    pub state: Option<String>,
24    pub country: Option<String>,
25}
26
27pub fn parse(_input: &str) -> Result<ParsedAddress, ParseError> {
28    Err(ParseError::NotInitialized)
29}
30
31pub fn expand(_input: &str) -> Vec<String> {
32    Vec::new()
33}