pub mod square_meters {
pub fn to_square_millimeters(value: f64) -> f64 {
value * 1_000_000.0
}
pub fn to_square_centimeters(value: f64) -> f64 {
value * 10_000.0
}
pub fn to_square_kilometers(value: f64) -> f64 {
value / 1_000_000.0
}
pub fn to_square_inches(value: f64) -> f64 {
value * 1550.0031
}
pub fn to_square_feet(value: f64) -> f64 {
value * 10.763910417
}
pub fn to_square_yards(value: f64) -> f64 {
value * 1.1959900463
}
pub fn to_acres(value: f64) -> f64 {
value / 4046.8564224
}
pub fn to_hectares(value: f64) -> f64 {
value / 10_000.0
}
pub fn to_square_miles(value: f64) -> f64 {
value / 2_589_988.110336
}
}
pub mod square_millimeters {
pub fn to_square_meters(value: f64) -> f64 {
value / 1_000_000.0
}
pub fn to_square_centimeters(value: f64) -> f64 {
value / 100.0
}
pub fn to_square_kilometers(value: f64) -> f64 {
super::square_meters::to_square_kilometers(to_square_meters(value))
}
pub fn to_square_inches(value: f64) -> f64 {
super::square_meters::to_square_inches(to_square_meters(value))
}
pub fn to_square_feet(value: f64) -> f64 {
super::square_meters::to_square_feet(to_square_meters(value))
}
pub fn to_square_yards(value: f64) -> f64 {
super::square_meters::to_square_yards(to_square_meters(value))
}
pub fn to_acres(value: f64) -> f64 {
super::square_meters::to_acres(to_square_meters(value))
}
pub fn to_hectares(value: f64) -> f64 {
super::square_meters::to_hectares(to_square_meters(value))
}
pub fn to_square_miles(value: f64) -> f64 {
super::square_meters::to_square_miles(to_square_meters(value))
}
}
pub mod square_centimeters {
pub fn to_square_meters(value: f64) -> f64 {
value / 10_000.0
}
pub fn to_square_millimeters(value: f64) -> f64 {
value * 100.0
}
pub fn to_square_kilometers(value: f64) -> f64 {
super::square_meters::to_square_kilometers(to_square_meters(value))
}
pub fn to_square_inches(value: f64) -> f64 {
value * 0.15500031
}
pub fn to_square_feet(value: f64) -> f64 {
super::square_meters::to_square_feet(to_square_meters(value))
}
pub fn to_square_yards(value: f64) -> f64 {
super::square_meters::to_square_yards(to_square_meters(value))
}
pub fn to_acres(value: f64) -> f64 {
super::square_meters::to_acres(to_square_meters(value))
}
pub fn to_hectares(value: f64) -> f64 {
super::square_meters::to_hectares(to_square_meters(value))
}
pub fn to_square_miles(value: f64) -> f64 {
super::square_meters::to_square_miles(to_square_meters(value))
}
}
pub mod square_kilometers {
pub fn to_square_meters(value: f64) -> f64 {
value * 1_000_000.0
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
super::square_meters::to_square_centimeters(to_square_meters(value))
}
pub fn to_square_inches(value: f64) -> f64 {
super::square_meters::to_square_inches(to_square_meters(value))
}
pub fn to_square_feet(value: f64) -> f64 {
super::square_meters::to_square_feet(to_square_meters(value))
}
pub fn to_square_yards(value: f64) -> f64 {
super::square_meters::to_square_yards(to_square_meters(value))
}
pub fn to_acres(value: f64) -> f64 {
value * 247.10538147
}
pub fn to_hectares(value: f64) -> f64 {
value * 100.0
}
pub fn to_square_miles(value: f64) -> f64 {
value * 0.3861021585
}
}
pub mod square_inches {
pub fn to_square_meters(value: f64) -> f64 {
value / 1550.0031
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
value / 0.15500031
}
pub fn to_square_kilometers(value: f64) -> f64 {
super::square_meters::to_square_kilometers(to_square_meters(value))
}
pub fn to_square_feet(value: f64) -> f64 {
value / 144.0
}
pub fn to_square_yards(value: f64) -> f64 {
value / 1296.0
}
pub fn to_acres(value: f64) -> f64 {
super::square_meters::to_acres(to_square_meters(value))
}
pub fn to_hectares(value: f64) -> f64 {
super::square_meters::to_hectares(to_square_meters(value))
}
pub fn to_square_miles(value: f64) -> f64 {
super::square_meters::to_square_miles(to_square_meters(value))
}
}
pub mod square_feet {
pub fn to_square_meters(value: f64) -> f64 {
value / 10.763910417
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
super::square_meters::to_square_centimeters(to_square_meters(value))
}
pub fn to_square_kilometers(value: f64) -> f64 {
super::square_meters::to_square_kilometers(to_square_meters(value))
}
pub fn to_square_inches(value: f64) -> f64 {
value * 144.0
}
pub fn to_square_yards(value: f64) -> f64 {
value / 9.0
}
pub fn to_acres(value: f64) -> f64 {
value / 43560.0
}
pub fn to_hectares(value: f64) -> f64 {
super::square_meters::to_hectares(to_square_meters(value))
}
pub fn to_square_miles(value: f64) -> f64 {
value / 27878400.0
}
}
pub mod square_yards {
pub fn to_square_meters(value: f64) -> f64 {
value / 1.1959900463
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
super::square_meters::to_square_centimeters(to_square_meters(value))
}
pub fn to_square_kilometers(value: f64) -> f64 {
super::square_meters::to_square_kilometers(to_square_meters(value))
}
pub fn to_square_inches(value: f64) -> f64 {
value * 1296.0
}
pub fn to_square_feet(value: f64) -> f64 {
value * 9.0
}
pub fn to_acres(value: f64) -> f64 {
value / 4840.0
}
pub fn to_hectares(value: f64) -> f64 {
super::square_meters::to_hectares(to_square_meters(value))
}
pub fn to_square_miles(value: f64) -> f64 {
value / 3097600.0
}
}
pub mod acres {
pub fn to_square_meters(value: f64) -> f64 {
value * 4046.8564224
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
super::square_meters::to_square_centimeters(to_square_meters(value))
}
pub fn to_square_kilometers(value: f64) -> f64 {
value / 247.10538147
}
pub fn to_square_inches(value: f64) -> f64 {
super::square_meters::to_square_inches(to_square_meters(value))
}
pub fn to_square_feet(value: f64) -> f64 {
value * 43560.0
}
pub fn to_square_yards(value: f64) -> f64 {
value * 4840.0
}
pub fn to_hectares(value: f64) -> f64 {
value * 0.40468564224
}
pub fn to_square_miles(value: f64) -> f64 {
value / 640.0
}
}
pub mod hectares {
pub fn to_square_meters(value: f64) -> f64 {
value * 10_000.0
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
super::square_meters::to_square_centimeters(to_square_meters(value))
}
pub fn to_square_kilometers(value: f64) -> f64 {
value / 100.0
}
pub fn to_square_inches(value: f64) -> f64 {
super::square_meters::to_square_inches(to_square_meters(value))
}
pub fn to_square_feet(value: f64) -> f64 {
super::square_meters::to_square_feet(to_square_meters(value))
}
pub fn to_square_yards(value: f64) -> f64 {
super::square_meters::to_square_yards(to_square_meters(value))
}
pub fn to_acres(value: f64) -> f64 {
value / 0.40468564224
}
pub fn to_square_miles(value: f64) -> f64 {
super::square_meters::to_square_miles(to_square_meters(value))
}
}
pub mod square_miles {
pub fn to_square_meters(value: f64) -> f64 {
value * 2_589_988.110336
}
pub fn to_square_millimeters(value: f64) -> f64 {
super::square_meters::to_square_millimeters(to_square_meters(value))
}
pub fn to_square_centimeters(value: f64) -> f64 {
super::square_meters::to_square_centimeters(to_square_meters(value))
}
pub fn to_square_kilometers(value: f64) -> f64 {
value / 0.3861021585
}
pub fn to_square_inches(value: f64) -> f64 {
super::square_meters::to_square_inches(to_square_meters(value))
}
pub fn to_square_feet(value: f64) -> f64 {
value * 27878400.0
}
pub fn to_square_yards(value: f64) -> f64 {
value * 3097600.0
}
pub fn to_acres(value: f64) -> f64 {
value * 640.0
}
pub fn to_hectares(value: f64) -> f64 {
super::square_meters::to_hectares(to_square_meters(value))
}
}
pub fn square_meters_to_square_millimeters(square_meters: f64) -> f64 {
square_meters::to_square_millimeters(square_meters)
}
pub fn square_millimeters_to_square_meters(square_millimeters: f64) -> f64 {
square_millimeters::to_square_meters(square_millimeters)
}
pub fn square_meters_to_square_centimeters(square_meters: f64) -> f64 {
square_meters::to_square_centimeters(square_meters)
}
pub fn square_centimeters_to_square_meters(square_centimeters: f64) -> f64 {
square_centimeters::to_square_meters(square_centimeters)
}
pub fn square_meters_to_square_kilometers(square_meters: f64) -> f64 {
square_meters::to_square_kilometers(square_meters)
}
pub fn square_kilometers_to_square_meters(square_kilometers: f64) -> f64 {
square_kilometers::to_square_meters(square_kilometers)
}
pub fn square_meters_to_square_feet(square_meters: f64) -> f64 {
square_meters::to_square_feet(square_meters)
}
pub fn square_feet_to_square_meters(square_feet: f64) -> f64 {
square_feet::to_square_meters(square_feet)
}
pub fn square_meters_to_acres(square_meters: f64) -> f64 {
square_meters::to_acres(square_meters)
}
pub fn acres_to_square_meters(acres: f64) -> f64 {
acres::to_square_meters(acres)
}
pub fn convert_area(value: f64, from_unit: &str, to_unit: &str) -> Result<f64, String> {
let from_unit = from_unit.to_lowercase();
let to_unit = to_unit.to_lowercase();
let square_meters = match from_unit.as_str() {
"m²" | "m2" | "sq_m" | "square_meters" => value,
"mm²" | "mm2" | "sq_mm" | "square_millimeters" => {
square_millimeters::to_square_meters(value)
}
"cm²" | "cm2" | "sq_cm" | "square_centimeters" => {
square_centimeters::to_square_meters(value)
}
"km²" | "km2" | "sq_km" | "square_kilometers" => {
square_kilometers::to_square_meters(value)
}
"in²" | "in2" | "sq_in" | "square_inches" => square_inches::to_square_meters(value),
"ft²" | "ft2" | "sq_ft" | "square_feet" => square_feet::to_square_meters(value),
"yd²" | "yd2" | "sq_yd" | "square_yards" => square_yards::to_square_meters(value),
"ac" | "acre" | "acres" => acres::to_square_meters(value),
"ha" | "hectare" | "hectares" => hectares::to_square_meters(value),
"mi²" | "mi2" | "sq_mi" | "square_miles" => square_miles::to_square_meters(value),
_ => return Err(format!("Unsupported area unit: {}", from_unit)),
};
let result = match to_unit.as_str() {
"m²" | "m2" | "sq_m" | "square_meters" => square_meters,
"mm²" | "mm2" | "sq_mm" | "square_millimeters" => {
square_meters::to_square_millimeters(square_meters)
}
"cm²" | "cm2" | "sq_cm" | "square_centimeters" => {
square_meters::to_square_centimeters(square_meters)
}
"km²" | "km2" | "sq_km" | "square_kilometers" => {
square_meters::to_square_kilometers(square_meters)
}
"in²" | "in2" | "sq_in" | "square_inches" => {
square_meters::to_square_inches(square_meters)
}
"ft²" | "ft2" | "sq_ft" | "square_feet" => square_meters::to_square_feet(square_meters),
"yd²" | "yd2" | "sq_yd" | "square_yards" => square_meters::to_square_yards(square_meters),
"ac" | "acre" | "acres" => square_meters::to_acres(square_meters),
"ha" | "hectare" | "hectares" => square_meters::to_hectares(square_meters),
"mi²" | "mi2" | "sq_mi" | "square_miles" => square_meters::to_square_miles(square_meters),
_ => return Err(format!("Unsupported area unit: {}", to_unit)),
};
Ok(result)
}