https://github.com/whisperfish/rust-phonenumber
Library for parsing, formatting and validating international phone numbers.
https://github.com/whisperfish/rust-phonenumber
formatter parser phone-number rust rust-library validator
Last synced: about 1 month ago
JSON representation
Library for parsing, formatting and validating international phone numbers.
- Host: GitHub
- URL: https://github.com/whisperfish/rust-phonenumber
- Owner: whisperfish
- License: apache-2.0
- Created: 2017-06-29T10:30:17.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2025-01-11T12:53:33.000Z (5 months ago)
- Last Synced: 2025-05-09T05:03:18.550Z (about 1 month ago)
- Topics: formatter, parser, phone-number, rust, rust-library, validator
- Language: Rust
- Homepage:
- Size: 4.56 MB
- Stars: 170
- Watchers: 10
- Forks: 55
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# phonenumber

[](https://crates.io/crates/phonenumber)
[](https://docs.rs/phonenumber)
[](https://opensource.org/licenses/Apache-2.0)Rust version of [libphonenumber](https://github.com/googlei18n/libphonenumber).
We currently require 1.58.0 as minimum supported Rust version (MSRV).## Usage
Add this to your `Cargo.toml`:
```toml
[dependencies]
phonenumber = "0.3"
```
## ExampleThe following example parses, validates and formats the given phone number.
```rust,no_run
use phonenumber::Mode;
use std::env;fn main() {
let mut args = env::args().skip(1).collect::>();if args.len() < 1 {
panic!("not enough arguments");
}let number = args.pop().unwrap();
let country = args.pop().map(|c| c.parse().unwrap());let number = phonenumber::parse(country, number).unwrap();
let valid = phonenumber::is_valid(&number);if valid {
println!("\x1b[32m{:#?}\x1b[0m", number);
println!();
println!("International: {}", number.format().mode(Mode::International));
println!(" National: {}", number.format().mode(Mode::National));
println!(" RFC3966: {}", number.format().mode(Mode::Rfc3966));
println!(" E.164: {}", number.format().mode(Mode::E164));
}
else {
println!("\x1b[31m{:#?}\x1b[0m", number);
}
}
```