pub mod liters {
pub fn to_gallons_us(value: f64) -> f64 {
value / 3.78541
}
pub fn to_gallons_uk(value: f64) -> f64 {
value / 4.54609
}
pub fn to_milliliters(value: f64) -> f64 {
value * 1000.0
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
value * 33.814
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
value * 35.1951
}
pub fn to_cups_us(value: f64) -> f64 {
value * 4.22675
}
pub fn to_pints_us(value: f64) -> f64 {
value * 2.11338
}
pub fn to_quarts_us(value: f64) -> f64 {
value * 1.05669
}
}
pub mod gallons_us {
pub fn to_liters(value: f64) -> f64 {
value * 3.78541
}
pub fn to_gallons_uk(value: f64) -> f64 {
super::liters::to_gallons_uk(to_liters(value))
}
pub fn to_milliliters(value: f64) -> f64 {
super::liters::to_milliliters(to_liters(value))
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
value * 128.0
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
super::liters::to_fluid_ounces_uk(to_liters(value))
}
pub fn to_cups_us(value: f64) -> f64 {
value * 16.0
}
pub fn to_pints_us(value: f64) -> f64 {
value * 8.0
}
pub fn to_quarts_us(value: f64) -> f64 {
value * 4.0
}
}
pub mod gallons_uk {
pub fn to_liters(value: f64) -> f64 {
value * 4.54609
}
pub fn to_gallons_us(value: f64) -> f64 {
super::liters::to_gallons_us(to_liters(value))
}
pub fn to_milliliters(value: f64) -> f64 {
super::liters::to_milliliters(to_liters(value))
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
super::liters::to_fluid_ounces_us(to_liters(value))
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
value * 160.0
}
pub fn to_cups_us(value: f64) -> f64 {
super::liters::to_cups_us(to_liters(value))
}
pub fn to_pints_us(value: f64) -> f64 {
super::liters::to_pints_us(to_liters(value))
}
pub fn to_quarts_us(value: f64) -> f64 {
super::liters::to_quarts_us(to_liters(value))
}
}
pub mod milliliters {
pub fn to_liters(value: f64) -> f64 {
value / 1000.0
}
pub fn to_gallons_us(value: f64) -> f64 {
super::liters::to_gallons_us(to_liters(value))
}
pub fn to_gallons_uk(value: f64) -> f64 {
super::liters::to_gallons_uk(to_liters(value))
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
value / 29.5735
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
value / 28.4131
}
pub fn to_cups_us(value: f64) -> f64 {
value / 236.588
}
pub fn to_pints_us(value: f64) -> f64 {
value / 473.176
}
pub fn to_quarts_us(value: f64) -> f64 {
value / 946.353
}
}
pub mod fluid_ounces_us {
pub fn to_liters(value: f64) -> f64 {
value / 33.814
}
pub fn to_gallons_us(value: f64) -> f64 {
value / 128.0
}
pub fn to_gallons_uk(value: f64) -> f64 {
super::liters::to_gallons_uk(to_liters(value))
}
pub fn to_milliliters(value: f64) -> f64 {
value * 29.5735
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
super::liters::to_fluid_ounces_uk(to_liters(value))
}
pub fn to_cups_us(value: f64) -> f64 {
value / 8.0
}
pub fn to_pints_us(value: f64) -> f64 {
value / 16.0
}
pub fn to_quarts_us(value: f64) -> f64 {
value / 32.0
}
}
pub mod fluid_ounces_uk {
pub fn to_liters(value: f64) -> f64 {
value / 35.1951
}
pub fn to_gallons_us(value: f64) -> f64 {
super::liters::to_gallons_us(to_liters(value))
}
pub fn to_gallons_uk(value: f64) -> f64 {
value / 160.0
}
pub fn to_milliliters(value: f64) -> f64 {
value * 28.4131
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
super::liters::to_fluid_ounces_us(to_liters(value))
}
pub fn to_cups_us(value: f64) -> f64 {
super::liters::to_cups_us(to_liters(value))
}
pub fn to_pints_us(value: f64) -> f64 {
super::liters::to_pints_us(to_liters(value))
}
pub fn to_quarts_us(value: f64) -> f64 {
super::liters::to_quarts_us(to_liters(value))
}
}
pub mod cups_us {
pub fn to_liters(value: f64) -> f64 {
value / 4.22675
}
pub fn to_gallons_us(value: f64) -> f64 {
value / 16.0
}
pub fn to_gallons_uk(value: f64) -> f64 {
super::liters::to_gallons_uk(to_liters(value))
}
pub fn to_milliliters(value: f64) -> f64 {
value * 236.588
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
value * 8.0
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
super::liters::to_fluid_ounces_uk(to_liters(value))
}
pub fn to_pints_us(value: f64) -> f64 {
value / 2.0
}
pub fn to_quarts_us(value: f64) -> f64 {
value / 4.0
}
}
pub mod pints_us {
pub fn to_liters(value: f64) -> f64 {
value / 2.11338
}
pub fn to_gallons_us(value: f64) -> f64 {
value / 8.0
}
pub fn to_gallons_uk(value: f64) -> f64 {
super::liters::to_gallons_uk(to_liters(value))
}
pub fn to_milliliters(value: f64) -> f64 {
value * 473.176
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
value * 16.0
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
super::liters::to_fluid_ounces_uk(to_liters(value))
}
pub fn to_cups_us(value: f64) -> f64 {
value * 2.0
}
pub fn to_quarts_us(value: f64) -> f64 {
value / 2.0
}
}
pub mod quarts_us {
pub fn to_liters(value: f64) -> f64 {
value / 1.05669
}
pub fn to_gallons_us(value: f64) -> f64 {
value / 4.0
}
pub fn to_gallons_uk(value: f64) -> f64 {
super::liters::to_gallons_uk(to_liters(value))
}
pub fn to_milliliters(value: f64) -> f64 {
value * 946.353
}
pub fn to_fluid_ounces_us(value: f64) -> f64 {
value * 32.0
}
pub fn to_fluid_ounces_uk(value: f64) -> f64 {
super::liters::to_fluid_ounces_uk(to_liters(value))
}
pub fn to_cups_us(value: f64) -> f64 {
value * 4.0
}
pub fn to_pints_us(value: f64) -> f64 {
value * 2.0
}
}
pub fn liters_to_gallons_us(liters: f64) -> f64 {
liters::to_gallons_us(liters)
}
pub fn gallons_us_to_liters(gallons: f64) -> f64 {
gallons_us::to_liters(gallons)
}
pub fn liters_to_gallons_uk(liters: f64) -> f64 {
liters::to_gallons_uk(liters)
}
pub fn gallons_uk_to_liters(gallons: f64) -> f64 {
gallons_uk::to_liters(gallons)
}
pub fn liters_to_milliliters(liters: f64) -> f64 {
liters::to_milliliters(liters)
}
pub fn milliliters_to_liters(ml: f64) -> f64 {
milliliters::to_liters(ml)
}
pub fn liters_to_fluid_ounces_us(liters: f64) -> f64 {
liters::to_fluid_ounces_us(liters)
}
pub fn fluid_ounces_us_to_liters(fl_oz: f64) -> f64 {
fluid_ounces_us::to_liters(fl_oz)
}
pub fn liters_to_fluid_ounces_uk(liters: f64) -> f64 {
liters::to_fluid_ounces_uk(liters)
}
pub fn fluid_ounces_uk_to_liters(fl_oz: f64) -> f64 {
fluid_ounces_uk::to_liters(fl_oz)
}
pub fn liters_to_cups_us(liters: f64) -> f64 {
liters::to_cups_us(liters)
}
pub fn cups_us_to_liters(cups: f64) -> f64 {
cups_us::to_liters(cups)
}
pub fn liters_to_pints_us(liters: f64) -> f64 {
liters::to_pints_us(liters)
}
pub fn pints_us_to_liters(pints: f64) -> f64 {
pints_us::to_liters(pints)
}
pub fn liters_to_quarts_us(liters: f64) -> f64 {
liters::to_quarts_us(liters)
}
pub fn quarts_us_to_liters(quarts: f64) -> f64 {
quarts_us::to_liters(quarts)
}
pub fn convert_volume(value: f64, from: &str, to: &str) -> Result<f64, String> {
let liters = match from.to_lowercase().as_str() {
"l" | "liter" | "liters" | "litre" | "litres" => value,
"ml" | "milliliter" | "milliliters" | "millilitre" | "millilitres" => {
milliliters_to_liters(value)
}
"gal" | "gallon" | "gallons" | "gal_us" => gallons_us_to_liters(value),
"gal_uk" | "gallon_uk" | "gallons_uk" => gallons_uk_to_liters(value),
"fl_oz" | "fl_oz_us" | "fluid_ounce" | "fluid_ounces" => fluid_ounces_us_to_liters(value),
"fl_oz_uk" | "fluid_ounce_uk" | "fluid_ounces_uk" => fluid_ounces_uk_to_liters(value),
"cup" | "cups" | "cup_us" => cups_us_to_liters(value),
"pt" | "pint" | "pints" | "pt_us" => pints_us_to_liters(value),
"qt" | "quart" | "quarts" | "qt_us" => quarts_us_to_liters(value),
_ => return Err(format!("Unknown volume unit: {}", from)),
};
let result = match to.to_lowercase().as_str() {
"l" | "liter" | "liters" | "litre" | "litres" => liters,
"ml" | "milliliter" | "milliliters" | "millilitre" | "millilitres" => {
liters_to_milliliters(liters)
}
"gal" | "gallon" | "gallons" | "gal_us" => liters_to_gallons_us(liters),
"gal_uk" | "gallon_uk" | "gallons_uk" => liters_to_gallons_uk(liters),
"fl_oz" | "fl_oz_us" | "fluid_ounce" | "fluid_ounces" => liters_to_fluid_ounces_us(liters),
"fl_oz_uk" | "fluid_ounce_uk" | "fluid_ounces_uk" => liters_to_fluid_ounces_uk(liters),
"cup" | "cups" | "cup_us" => liters_to_cups_us(liters),
"pt" | "pint" | "pints" | "pt_us" => liters_to_pints_us(liters),
"qt" | "quart" | "quarts" | "qt_us" => liters_to_quarts_us(liters),
_ => return Err(format!("Unknown volume unit: {}", to)),
};
Ok(result)
}