https://github.com/pranamphd/digipin-rs
Rust implementation of the DIGIPIN geo-coded addressing system.
https://github.com/pranamphd/digipin-rs
address-validation digipin geo-coding india pincode zipcode
Last synced: about 1 month ago
JSON representation
Rust implementation of the DIGIPIN geo-coded addressing system.
- Host: GitHub
- URL: https://github.com/pranamphd/digipin-rs
- Owner: pranamphd
- License: apache-2.0
- Created: 2026-01-09T06:23:03.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-01-13T05:55:58.000Z (about 2 months ago)
- Last Synced: 2026-01-13T06:49:01.413Z (about 2 months ago)
- Topics: address-validation, digipin, geo-coding, india, pincode, zipcode
- Language: Rust
- Homepage: https://crates.io/crates/digipin-rs
- Size: 116 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# digipin-rs
DIGIPIN (Digital Postal Index Number) is a national-level, geo-coded addressing grid developed by the **Department of Posts, Ministry of Communications, Government of India**. It provides a deterministic and reversible method to represent geographic locations in India using a **10-character alphanumeric code derived from latitude and longitude**.
This repository contains a **Rust implementation of the DIGIPIN algorithm**, intended to enable consistent and correct adoption across platforms, applications, and systems.

## What this repository provides
- Deterministic conversion from **latitude / longitude → DIGIPIN**
- Reversible conversion from **DIGIPIN → geographic coordinates**
- Comprehensive tests to ensure correctness
- Implementation aligned with the **final DIGIPIN Technical Specification (March 2025)**
---
## Specification reference
This project implements the **DIGIPIN (Digital Postal Index Number)** algorithm strictly according to the official technical specification published by the **Department of Posts, Ministry of Communications, Government of India**.
The authoritative specification is available at:
[https://www.indiapost.gov.in/digipin](https://www.indiapost.gov.in/digipin)
All implementations in this repository aim to faithfully reproduce the behavior described in the final DIGIPIN Technical Document (March 2025).
> This repository provides an independent implementation of the DIGIPIN specification and is not an official distribution of the Department of Posts unless explicitly stated otherwise.
---
## Design principles
- **Specification-first**: Implementation strictly follows the DIGIPIN technical specification.
- **Deterministic**: The same input always produces the same output, regardless of language or platform.
- **No external dependencies**: Core logic is self-contained.
---
## Usage
```sh
cargo add digipin-rs
```
```rust
use digipin::{encode, decode, Location};
fn main() -> Result<(), Box> {
let location = Location {
latitude: 28.622788,
longitude: 77.213033,
};
let digipin = encode(location)?;
let decoded_location = decode(&digipin)?;
println!("DIGIPIN: {}", digipin);
println!("Decoded Location: {:?}", decoded_location);
Ok(())
}
```
---
## Documentation
API documentation is available on [**docs.rs**](https://docs.rs/digipin-rs).
[](https://docs.rs/digipin-rs)
---
## Status
This repository is under active development.
The library interfaces (function and type signatures) may evolve until the first stable release (`v1.0.0`).
[](https://crates.io/crates/digipin-rs)
[](https://www.bestpractices.dev/projects/11730)
[](https://slsa.dev)
---
## License
This project is licensed under the **Apache License, Version 2.0**.
See the [LICENSE](LICENSE) file for details.