# Crate ohms

Expand description

Electrical unit types for embedded targets focusing on ease-of-use and performance

Supported units:

• Current (μA, mA, A)
• Resistance (mΩ, Ω, kΩ, MΩ)
• Voltage (μV, mV, V, kV)
• Power (μW, mW, W, kW)

Each unit type has a corresponding extension trait for creating values from integer and floating point values.

Unit types can easily be converted to and from different denominations.

Ohm’s Law is implemented for `Voltage` and `Current` types, allowing you to easily calculate between the three units using the `/` and `*` operators.

### Examples

Determine the resistance of a 5V, 1A load:

``````use ohms::prelude::*;

let voltage = 5.volts();
let current = 1.amps();

let resistance = voltage / current; // 5V / 1A = 5Ω
println!("Resistance: {} Ω", resistance.ohms());``````

Determine the current of a 5V, 220Ω load:

``````use ohms::prelude::*;

let voltage = 5.volts();
let resistance = 220.ohms();

let current = voltage / resistance; // 5V / 220Ω = 22.72mA
println!("Current: {} mA", current.milli_amps());``````

Determine the voltage of a 0.5A, 4.7kΩ load:

``````use ohms::prelude::*;

let current = 0.5.milli_amps();
let resistance = 4.7.kilo_ohms();

let voltage = current * resistance; // 0.5mA * 4.7kΩ = 2.35V
println!("Voltage: {} V", voltage.volts());``````

## Structs

• Represents a current value, stored as whole microamps (μA) as a 64-bit value. This value can only be positive.
• Represents a power value, stored as whole microwatts (μW) as a 64-bit value. This value can only be positive.
• Represents a resistance value, stored as whole milliohms (mΩ) as a 64-bit value. This value can only be positive.
• Represents a voltage value, stored as whole microvolts (μV) as a signed 64-bit value. This value can be positive or negative.

## Traits

• Extension trait for simple short-hands for creating `Current` values from floating-point values.
• Extension trait for simple short-hands for creating `Current` values from integer values.
• Extension trait for simple short-hands for creating `Power` values from floating-point values.
• Extension trait for simple short-hands for creating `Power` values from integer values.
• Extension trait for simple short-hands for creating `Resistance` values from floating-point values.
• Extension trait for simple short-hands for creating `Resistance` values from integer values.
• Extension trait for simple short-hands for creating `Voltage` values from floating-point values.
• Extension trait for simple short-hands for creating `Voltage` values from integer values.