| Crates.io | fake_asia |
| lib.rs | fake_asia |
| version | 0.1.0 |
| created_at | 2025-10-29 03:57:14.599771+00 |
| updated_at | 2025-10-29 03:57:14.599771+00 |
| description | A realistic fake data generator library for Asian countries (China, Japan, South Korea, India) with authentic postal codes |
| homepage | |
| repository | https://github.com/xjz6626/fake_asia.git |
| max_upload_size | |
| id | 1906033 |
| size | 95,918 |
๐ญ A realistic fake data generator library focused on Asian countries (China, Japan, South Korea, India)
ไธญๆๆๆกฃ | English
fake_asia is a Rust library for generating realistic fake data specifically for Asian countries. It provides authentic formats for names, addresses, phone numbers, and more. Perfect for:
Add to your Cargo.toml:
[dependencies]
fake_asia = "0.1.0"
use fake_asia::*;
use rand::thread_rng;
fn main() {
let mut rng = thread_rng();
// Generate Chinese name
let name = format!(
"{}{}",
chinese_last_name(&mut rng),
chinese_first_name(&mut rng)
);
println!("Name: {}", name);
// Generate phone numbers
let mobile = chinese_phone_number(&mut rng);
let landline = chinese_landline(&mut rng);
println!("Mobile: {}", mobile);
println!("Landline: {}", landline);
// Generate ID card
let id_card = chinese_id_card(&mut rng);
println!("ID: {}", id_card);
// Generate address with real postal code
let address = chinese_address(&mut rng);
println!("Address: {}", address);
// Generate email
let email = email(&mut rng);
println!("Email: {}", email);
// Generate license plate
let plate = chinese_license_plate(&mut rng);
println!("Plate: {}", plate);
}
use fake_asia::*;
fn main() {
// Use FakeAsia trait's fake() method
let name: String = FakeAsia::fake();
let address: ChineseAddress = FakeAsia::fake();
let company: ChineseCompany = FakeAsia::fake();
println!("Name: {}", name);
println!("Address: {}", address);
println!("Company: {}", company);
}
use fake_asia::*;
use rand::thread_rng;
fn main() {
let mut rng = thread_rng();
// Generate complete Chinese person info
let person = chinese_person(&mut rng);
println!("{}", person);
// Generate Japanese person info
let jp_person = japanese_person(&mut rng);
println!("{}", jp_person);
// Generate Korean person info
let kr_person = korean_person(&mut rng);
println!("{}", kr_person);
// Generate Indian person info
let in_person = indian_person(&mut rng);
println!("{}", in_person);
}
use fake_asia::*;
use rand::thread_rng;
fn main() {
let mut rng = thread_rng();
// Generate 10 Chinese persons
let persons = chinese_persons(10, &mut rng);
for (i, person) in persons.iter().enumerate() {
println!("=== Person {} ===", i + 1);
println!("{}\n", person);
}
// Use generic batch generation function
let phones = generate_multiple(5, &mut rng, chinese_phone_number);
println!("5 phone numbers: {:?}", phones);
}
use fake_asia::*;
use rand::thread_rng;
fn main() {
let mut rng = thread_rng();
// Japanese data
let jp_name = format!(
"{}{}",
japanese_last_name(&mut rng),
japanese_male_first_name(&mut rng)
);
println!("Japanese name: {}", jp_name);
println!("Mobile: {}", japanese_phone_number(&mut rng));
println!("Address: {}", japanese_address(&mut rng));
// Korean data
let kr_name = format!(
"{} {}",
korean_last_name(&mut rng),
korean_male_first_name(&mut rng)
);
println!("Korean name: {}", kr_name);
println!("Mobile: {}", korean_phone_number(&mut rng));
println!("Address: {}", korean_address(&mut rng));
// Indian data
let in_name = format!(
"{} {}",
indian_male_first_name(&mut rng),
indian_last_name(&mut rng)
);
println!("Indian name: {}", in_name);
println!("Mobile: {}", indian_phone_number(&mut rng));
println!("Address: {}", indian_address(&mut rng));
}
Names:
chinese_last_name(&mut rng) - Random surnamechinese_male_first_name(&mut rng) - Random male given namechinese_female_first_name(&mut rng) - Random female given namechinese_first_name(&mut rng) - Random given name (male/female)Contact:
chinese_phone_number(&mut rng) - 11-digit mobile numberchinese_landline(&mut rng) - Landline with area codeemail(&mut rng) - Email addressIdentity:
chinese_id_card(&mut rng) - 18-digit ID card with check digitchinese_license_plate(&mut rng) - License plate numberLocation:
chinese_address(&mut rng) - Complete address (returns ChineseAddress)chinese_city(&mut rng) - City namechinese_company(&mut rng) - Company name (returns ChineseCompany)Batch:
chinese_person(&mut rng) - Complete person informationchinese_persons(count, &mut rng) - Multiple personsjapanese_last_name(&mut rng) - Surnamejapanese_male_first_name(&mut rng) - Male given namejapanese_female_first_name(&mut rng) - Female given namejapanese_phone_number(&mut rng) - Mobile (090-XXXX-XXXX)japanese_landline(&mut rng) - Landline (03-XXXX-XXXX)japanese_address(&mut rng) - Complete address with real postal codejapanese_city(&mut rng) - City namejapanese_person(&mut rng) - Complete person informationjapanese_persons(count, &mut rng) - Multiple personskorean_last_name(&mut rng) - Surnamekorean_male_first_name(&mut rng) - Male given namekorean_female_first_name(&mut rng) - Female given namekorean_phone_number(&mut rng) - Mobile (010-XXXX-XXXX)korean_landline(&mut rng) - Landline (02-XXXX-XXXX)korean_address(&mut rng) - Complete address with real postal codekorean_city(&mut rng) - City namekorean_person(&mut rng) - Complete person informationkorean_persons(count, &mut rng) - Multiple personsindian_last_name(&mut rng) - Surnameindian_male_first_name(&mut rng) - Male given nameindian_female_first_name(&mut rng) - Female given nameindian_phone_number(&mut rng) - Mobile (10-digit)indian_landline(&mut rng) - Landline (022-XXXXXXXX)indian_address(&mut rng) - Complete address with real PIN codeindian_city(&mut rng) - City nameindian_person(&mut rng) - Complete person informationindian_persons(count, &mut rng) - Multiple personsgenerate_multiple(count, &mut rng, generator) - Generic batch generation function// Chinese address
pub struct ChineseAddress {
pub province: &'static str,
pub city: &'static str,
pub street: String,
pub postal_code: String, // Real 6-digit postal code
}
// Japanese address
pub struct JapaneseAddress {
pub prefecture: &'static str,
pub city: &'static str,
pub street: String,
pub postal_code: String, // Real 7-digit postal code (XXX-XXXX)
}
// Korean address
pub struct KoreanAddress {
pub province: &'static str,
pub city: &'static str,
pub street: String,
pub postal_code: String, // Real 5-digit postal code
}
// Indian address
pub struct IndianAddress {
pub city: &'static str,
pub state: &'static str,
pub street: String,
pub postal_code: String, // Real 6-digit PIN code
}
// Person information structures
pub struct PersonInfo { /* Chinese */ }
pub struct JapanesePersonInfo { /* Japanese */ }
pub struct KoreanPersonInfo { /* Korean */ }
pub struct IndianPersonInfo { /* Indian */ }
pub trait FakeAsia {
fn fake_asia<R: Rng + ?Sized>(rng: &mut R) -> Self;
fn fake() -> Self where Self: Sized;
}
Implemented for:
String - Generates Chinese full nameChineseAddress, JapaneseAddress, KoreanAddress, IndianAddressChineseCompanycargo test
View test output:
cargo test -- --nocapture
Run examples:
cargo run --example basic_usage
All data used in this library comes from public information:
โ ๏ธ Note: Generated data is for testing purposes only. Do not use for fraud or illegal activities.
Issues and Pull Requests are welcome!
This project is licensed under the MIT License. See LICENSE file for details.
Thanks to all contributors to this project!
If this project helps you, please give it a โญ๏ธ!