1个不稳定版本
0.3.1+8.12.9-1 | 2023年1月26日 |
---|
#2418 in 解析器实现
14MB
3.5K SLoC
phonenumber

Rust版本的libphonenumber,由Google提供。
用法
将以下内容添加到您的Cargo.toml
[dependencies]
phonenumber = "0.1"
示例
以下示例解析、验证和格式化给定的电话号码。
extern crate phonenumber;
use phonenumber::Mode;
use std::env;
fn main() {
let mut args = env::args().skip(1).collect::<Vec<_>>();
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);
}
}
依赖项
~7.5MB
~142K SLoC