pub mod amperes {
pub fn to_milliamperes(value: f64) -> f64 {
value * 1000.0
}
pub fn to_microamperes(value: f64) -> f64 {
value * 1_000_000.0
}
pub fn to_nanoamperes(value: f64) -> f64 {
value * 1_000_000_000.0
}
pub fn to_kiloamperes(value: f64) -> f64 {
value / 1000.0
}
}
pub mod milliamperes {
pub fn to_amperes(value: f64) -> f64 {
value / 1000.0
}
pub fn to_microamperes(value: f64) -> f64 {
value * 1000.0
}
pub fn to_nanoamperes(value: f64) -> f64 {
value * 1_000_000.0
}
pub fn to_kiloamperes(value: f64) -> f64 {
super::amperes::to_kiloamperes(to_amperes(value))
}
}
pub mod microamperes {
pub fn to_amperes(value: f64) -> f64 {
value / 1_000_000.0
}
pub fn to_milliamperes(value: f64) -> f64 {
value / 1000.0
}
pub fn to_nanoamperes(value: f64) -> f64 {
value * 1000.0
}
pub fn to_kiloamperes(value: f64) -> f64 {
super::amperes::to_kiloamperes(to_amperes(value))
}
}
pub mod nanoamperes {
pub fn to_amperes(value: f64) -> f64 {
value / 1_000_000_000.0
}
pub fn to_milliamperes(value: f64) -> f64 {
value / 1_000_000.0
}
pub fn to_microamperes(value: f64) -> f64 {
value / 1000.0
}
pub fn to_kiloamperes(value: f64) -> f64 {
super::amperes::to_kiloamperes(to_amperes(value))
}
}
pub mod kiloamperes {
pub fn to_amperes(value: f64) -> f64 {
value * 1000.0
}
pub fn to_milliamperes(value: f64) -> f64 {
super::amperes::to_milliamperes(to_amperes(value))
}
pub fn to_microamperes(value: f64) -> f64 {
super::amperes::to_microamperes(to_amperes(value))
}
pub fn to_nanoamperes(value: f64) -> f64 {
super::amperes::to_nanoamperes(to_amperes(value))
}
}
pub fn amperes_to_milliamperes(amperes: f64) -> f64 {
amperes::to_milliamperes(amperes)
}
pub fn milliamperes_to_amperes(milliamperes: f64) -> f64 {
milliamperes::to_amperes(milliamperes)
}
pub fn amperes_to_microamperes(amperes: f64) -> f64 {
amperes::to_microamperes(amperes)
}
pub fn microamperes_to_amperes(microamperes: f64) -> f64 {
microamperes::to_amperes(microamperes)
}
pub fn amperes_to_kiloamperes(amperes: f64) -> f64 {
amperes::to_kiloamperes(amperes)
}
pub fn kiloamperes_to_amperes(kiloamperes: f64) -> f64 {
kiloamperes::to_amperes(kiloamperes)
}
pub fn convert_current(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 amperes = match from_unit.as_str() {
"a" | "amp" | "ampere" | "amperes" => value,
"ma" | "milliamp" | "milliampere" | "milliamperes" => milliamperes::to_amperes(value),
"μa" | "ua" | "microamp" | "microampere" | "microamperes" => {
microamperes::to_amperes(value)
}
"na" | "nanoamp" | "nanoampere" | "nanoamperes" => nanoamperes::to_amperes(value),
"ka" | "kiloamp" | "kiloampere" | "kiloamperes" => kiloamperes::to_amperes(value),
_ => return Err(format!("Unsupported current unit: {}", from_unit)),
};
let result = match to_unit.as_str() {
"a" | "amp" | "ampere" | "amperes" => amperes,
"ma" | "milliamp" | "milliampere" | "milliamperes" => amperes::to_milliamperes(amperes),
"μa" | "ua" | "microamp" | "microampere" | "microamperes" => {
amperes::to_microamperes(amperes)
}
"na" | "nanoamp" | "nanoampere" | "nanoamperes" => amperes::to_nanoamperes(amperes),
"ka" | "kiloamp" | "kiloampere" | "kiloamperes" => amperes::to_kiloamperes(amperes),
_ => return Err(format!("Unsupported current unit: {}", to_unit)),
};
Ok(result)
}