1#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
2pub enum TemperatureUnit {
3 #[default]
4 Celcius,
5 Kelvin,
6 Fahrenheit,
7 Other(&'static str),
8}
9
10impl TemperatureUnit {
11 pub fn as_str(&self) -> &'static str {
12 match self {
13 TemperatureUnit::Celcius => crate::constants::HA_UNIT_TEMPERATURE_CELSIUS,
14 TemperatureUnit::Kelvin => crate::constants::HA_UNIT_TEMPERATURE_KELVIN,
15 TemperatureUnit::Fahrenheit => crate::constants::HA_UNIT_TEMPERATURE_FAHRENHEIT,
16 TemperatureUnit::Other(other) => other,
17 }
18 }
19}
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq)]
22pub enum HumidityUnit {
23 Percentage,
24 Other(&'static str),
25}
26
27impl HumidityUnit {
28 pub fn as_str(&self) -> &'static str {
29 match self {
30 HumidityUnit::Percentage => crate::constants::HA_UNIT_PERCENTAGE,
31 HumidityUnit::Other(other) => other,
32 }
33 }
34}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq)]
37pub enum BatteryUnit {
38 Percentage,
39}
40
41impl BatteryUnit {
42 pub fn as_str(&self) -> &'static str {
43 match self {
44 BatteryUnit::Percentage => crate::constants::HA_UNIT_PERCENTAGE,
45 }
46 }
47}
48
49#[derive(Debug, Clone, Copy, PartialEq, Eq)]
50pub enum LightUnit {
51 Lux,
52}
53
54impl LightUnit {
55 pub fn as_str(&self) -> &'static str {
56 match self {
57 LightUnit::Lux => crate::constants::HA_UNIT_LIGHT_LUX,
58 }
59 }
60}
61
62#[derive(Debug, Clone, Copy, PartialEq, Eq)]
63pub enum PressureUnit {
64 HectoPascal,
65}
66
67impl PressureUnit {
68 pub fn as_str(&self) -> &'static str {
69 match self {
70 PressureUnit::HectoPascal => crate::constants::HA_UNIT_PRESSURE_HPA,
71 }
72 }
73}
74
75#[derive(Debug, Clone, Copy, PartialEq, Eq)]
76pub enum SignalStrengthUnit {
77 Dbm,
78}
79
80impl SignalStrengthUnit {
81 pub fn as_str(&self) -> &'static str {
82 match self {
83 SignalStrengthUnit::Dbm => crate::constants::HA_UNIT_SIGNAL_STRENGTH_DBM,
84 }
85 }
86}
87
88#[derive(Debug, Clone, Copy, PartialEq, Eq)]
89pub enum EnergyUnit {
90 KiloWattHour,
91}
92
93impl EnergyUnit {
94 pub fn as_str(&self) -> &'static str {
95 match self {
96 EnergyUnit::KiloWattHour => crate::constants::HA_UNIT_ENERGY_KWH,
97 }
98 }
99}
100
101#[derive(Debug, Clone, Copy, PartialEq, Eq)]
102pub enum TimeUnit {
103 Milliseconds,
104 Seconds,
105 Minutes,
106 Hours,
107 Days,
108}
109
110impl TimeUnit {
111 pub fn as_str(&self) -> &'static str {
112 match self {
113 TimeUnit::Milliseconds => crate::constants::HA_UNIT_TIME_MILLISECONDS,
114 TimeUnit::Seconds => crate::constants::HA_UNIT_TIME_SECONDS,
115 TimeUnit::Minutes => crate::constants::HA_UNIT_TIME_MINUTES,
116 TimeUnit::Hours => crate::constants::HA_UNIT_TIME_HOURS,
117 TimeUnit::Days => crate::constants::HA_UNIT_TIME_DAYS,
118 }
119 }
120}
121
122#[derive(Debug, Clone, Copy, PartialEq, Eq)]
123pub enum PowerUnit {
124 Watt,
125 KiloWatt,
126}
127
128impl PowerUnit {
129 pub fn as_str(&self) -> &'static str {
130 match self {
131 PowerUnit::Watt => crate::constants::HA_UNIT_POWER_WATT,
132 PowerUnit::KiloWatt => crate::constants::HA_UNIT_POWER_KILOWATT,
133 }
134 }
135}
136
137#[derive(Debug, Clone, Copy, PartialEq, Eq)]
138pub enum VoltageUnit {
139 Volt,
140}
141
142impl VoltageUnit {
143 pub fn as_str(&self) -> &'static str {
144 match self {
145 VoltageUnit::Volt => crate::constants::HA_UNIT_VOLTAGE_VOLT,
146 }
147 }
148}
149
150#[derive(Debug, Clone, Copy, PartialEq, Eq)]
151pub enum CurrentUnit {
152 Ampere,
153}
154
155impl CurrentUnit {
156 pub fn as_str(&self) -> &'static str {
157 match self {
158 CurrentUnit::Ampere => crate::constants::HA_UNIT_CURRENT_AMPERE,
159 }
160 }
161}
162
163#[derive(Debug, Clone, Copy, PartialEq, Eq)]
164pub enum DistanceUnit {
165 Millimeter,
166 Centimeter,
167 Meter,
168 Kilometer,
169}
170
171impl DistanceUnit {
172 pub fn as_str(&self) -> &'static str {
173 match self {
174 DistanceUnit::Millimeter => crate::constants::HA_UNIT_DISTANCE_MILLIMETER,
175 DistanceUnit::Centimeter => crate::constants::HA_UNIT_DISTANCE_CENTIMETER,
176 DistanceUnit::Meter => crate::constants::HA_UNIT_DISTANCE_METER,
177 DistanceUnit::Kilometer => crate::constants::HA_UNIT_DISTANCE_KILOMETER,
178 }
179 }
180}
181
182#[derive(Debug, Clone, Copy, PartialEq, Eq)]
183pub enum CurrencyUnit {
184 USD,
185 EUR,
186 GBP,
187 JPY,
188 CNY,
189 CAD,
190 AUD,
191 CHF,
192 INR,
193 BRL,
194 Dollar,
195 Euro,
196 Pound,
197 Yen,
198 Cent,
199 Other(&'static str),
200}
201
202impl CurrencyUnit {
203 pub fn as_str(&self) -> &'static str {
204 match self {
205 CurrencyUnit::USD => crate::constants::HA_UNIT_CURRENCY_USD,
206 CurrencyUnit::EUR => crate::constants::HA_UNIT_CURRENCY_EUR,
207 CurrencyUnit::GBP => crate::constants::HA_UNIT_CURRENCY_GBP,
208 CurrencyUnit::JPY => crate::constants::HA_UNIT_CURRENCY_JPY,
209 CurrencyUnit::CNY => crate::constants::HA_UNIT_CURRENCY_CNY,
210 CurrencyUnit::CAD => crate::constants::HA_UNIT_CURRENCY_CAD,
211 CurrencyUnit::AUD => crate::constants::HA_UNIT_CURRENCY_AUD,
212 CurrencyUnit::CHF => crate::constants::HA_UNIT_CURRENCY_CHF,
213 CurrencyUnit::INR => crate::constants::HA_UNIT_CURRENCY_INR,
214 CurrencyUnit::BRL => crate::constants::HA_UNIT_CURRENCY_BRL,
215 CurrencyUnit::Dollar => crate::constants::HA_UNIT_CURRENCY_DOLLAR,
216 CurrencyUnit::Euro => crate::constants::HA_UNIT_CURRENCY_EURO,
217 CurrencyUnit::Pound => crate::constants::HA_UNIT_CURRENCY_POUND,
218 CurrencyUnit::Yen => crate::constants::HA_UNIT_CURRENCY_YEN,
219 CurrencyUnit::Cent => crate::constants::HA_UNIT_CURRENCY_CENT,
220 CurrencyUnit::Other(other) => other,
221 }
222 }
223}
224
225#[derive(Debug, Clone, Copy, PartialEq, Eq)]
226pub enum NumberUnit {
227 Joule,
229 KiloJoule,
230 MegaJoule,
231 GigaJoule,
232 MilliWattHour,
233 WattHour,
234 KiloWattHour,
235 MegaWattHour,
236 GigaWattHour,
237 TeraWattHour,
238 Calorie,
239 KiloCalorie,
240 MegaCalorie,
241 GigaCalorie,
242 Celsius,
244 Fahrenheit,
245 Kelvin,
246 MilliPascal,
248 Pascal,
249 HectoPascal,
250 KiloPascal,
251 Bar,
252 CentiBar,
253 MilliBar,
254 MillimeterMercury,
255 InchMercury,
256 InchWater,
257 Psi,
258 Liter,
260 MilliLiter,
261 Gallon,
262 FluidOunce,
263 CubicMeter,
264 CubicFoot,
265 CCF,
266 MCF,
267 FeetPerSecond,
269 InchPerDay,
270 InchPerHour,
271 InchPerSecond,
272 KilometerPerHour,
273 Knot,
274 MeterPerSecond,
275 MilePerHour,
276 MillimeterPerDay,
277 MillimeterPerSecond,
278 Kilometer,
280 Meter,
281 Centimeter,
282 Millimeter,
283 Mile,
284 NauticalMile,
285 Yard,
286 Inch,
287 MilliWatt,
289 Watt,
290 KiloWatt,
291 MegaWatt,
292 GigaWatt,
293 TeraWatt,
294 Ampere,
296 MilliAmpere,
297 Volt,
299 MilliVolt,
300 MicroVolt,
301 KiloVolt,
302 MegaVolt,
303 BitPerSecond,
305 KiloBitPerSecond,
306 MegaBitPerSecond,
307 GigaBitPerSecond,
308 BytePerSecond,
309 KiloBytePerSecond,
310 MegaBytePerSecond,
311 GigaBytePerSecond,
312 KibiBytePerSecond,
313 MebiBytePerSecond,
314 GibiBytePerSecond,
315 Kilogram,
317 Gram,
318 Milligram,
319 Microgram,
320 Ounce,
321 Pound,
322 Stone,
323 Percentage,
325 Other(&'static str),
326}
327
328impl NumberUnit {
329 pub fn as_str(&self) -> &'static str {
330 match self {
331 NumberUnit::Joule => crate::constants::HA_UNIT_ENERGY_JOULE,
333 NumberUnit::KiloJoule => crate::constants::HA_UNIT_ENERGY_KILOJOULE,
334 NumberUnit::MegaJoule => crate::constants::HA_UNIT_ENERGY_MEGAJOULE,
335 NumberUnit::GigaJoule => crate::constants::HA_UNIT_ENERGY_GIGAJOULE,
336 NumberUnit::MilliWattHour => crate::constants::HA_UNIT_ENERGY_MILLIWATTHOUR,
337 NumberUnit::WattHour => crate::constants::HA_UNIT_ENERGY_WATTHOUR,
338 NumberUnit::KiloWattHour => crate::constants::HA_UNIT_ENERGY_KWH,
339 NumberUnit::MegaWattHour => crate::constants::HA_UNIT_ENERGY_MEGAWATTHOUR,
340 NumberUnit::GigaWattHour => crate::constants::HA_UNIT_ENERGY_GIGAWATTHOUR,
341 NumberUnit::TeraWattHour => crate::constants::HA_UNIT_ENERGY_TERAWATTHOUR,
342 NumberUnit::Calorie => crate::constants::HA_UNIT_ENERGY_CALORIE,
343 NumberUnit::KiloCalorie => crate::constants::HA_UNIT_ENERGY_KILOCALORIE,
344 NumberUnit::MegaCalorie => crate::constants::HA_UNIT_ENERGY_MEGACALORIE,
345 NumberUnit::GigaCalorie => crate::constants::HA_UNIT_ENERGY_GIGACALORIE,
346 NumberUnit::Celsius => crate::constants::HA_UNIT_TEMPERATURE_CELSIUS,
348 NumberUnit::Fahrenheit => crate::constants::HA_UNIT_TEMPERATURE_FAHRENHEIT,
349 NumberUnit::Kelvin => crate::constants::HA_UNIT_TEMPERATURE_KELVIN,
350 NumberUnit::MilliPascal => crate::constants::HA_UNIT_PRESSURE_MILLIPASCAL,
352 NumberUnit::Pascal => crate::constants::HA_UNIT_PRESSURE_PASCAL,
353 NumberUnit::HectoPascal => crate::constants::HA_UNIT_PRESSURE_HPA,
354 NumberUnit::KiloPascal => crate::constants::HA_UNIT_PRESSURE_KILOPASCAL,
355 NumberUnit::Bar => crate::constants::HA_UNIT_PRESSURE_BAR,
356 NumberUnit::CentiBar => crate::constants::HA_UNIT_PRESSURE_CENTIBAR,
357 NumberUnit::MilliBar => crate::constants::HA_UNIT_PRESSURE_MILLIBAR,
358 NumberUnit::MillimeterMercury => crate::constants::HA_UNIT_PRESSURE_MILLIMETER_MERCURY,
359 NumberUnit::InchMercury => crate::constants::HA_UNIT_PRESSURE_INCH_MERCURY,
360 NumberUnit::InchWater => crate::constants::HA_UNIT_PRESSURE_INCH_WATER,
361 NumberUnit::Psi => crate::constants::HA_UNIT_PRESSURE_PSI,
362 NumberUnit::Liter => crate::constants::HA_UNIT_VOLUME_LITER,
364 NumberUnit::MilliLiter => crate::constants::HA_UNIT_VOLUME_MILLILITER,
365 NumberUnit::Gallon => crate::constants::HA_UNIT_VOLUME_GALLON,
366 NumberUnit::FluidOunce => crate::constants::HA_UNIT_VOLUME_FLUID_OUNCE,
367 NumberUnit::CubicMeter => crate::constants::HA_UNIT_VOLUME_CUBIC_METER,
368 NumberUnit::CubicFoot => crate::constants::HA_UNIT_VOLUME_CUBIC_FOOT,
369 NumberUnit::CCF => crate::constants::HA_UNIT_VOLUME_CCF,
370 NumberUnit::MCF => crate::constants::HA_UNIT_VOLUME_MCF,
371 NumberUnit::FeetPerSecond => crate::constants::HA_UNIT_SPEED_FEET_PER_SECOND,
373 NumberUnit::InchPerDay => crate::constants::HA_UNIT_SPEED_INCH_PER_DAY,
374 NumberUnit::InchPerHour => crate::constants::HA_UNIT_SPEED_INCH_PER_HOUR,
375 NumberUnit::InchPerSecond => crate::constants::HA_UNIT_SPEED_INCH_PER_SECOND,
376 NumberUnit::KilometerPerHour => crate::constants::HA_UNIT_SPEED_KILOMETER_PER_HOUR,
377 NumberUnit::Knot => crate::constants::HA_UNIT_SPEED_KNOT,
378 NumberUnit::MeterPerSecond => crate::constants::HA_UNIT_SPEED_METER_PER_SECOND,
379 NumberUnit::MilePerHour => crate::constants::HA_UNIT_SPEED_MILE_PER_HOUR,
380 NumberUnit::MillimeterPerDay => crate::constants::HA_UNIT_SPEED_MILLIMETER_PER_DAY,
381 NumberUnit::MillimeterPerSecond => {
382 crate::constants::HA_UNIT_SPEED_MILLIMETER_PER_SECOND
383 }
384 NumberUnit::Kilometer => crate::constants::HA_UNIT_DISTANCE_KILOMETER,
386 NumberUnit::Meter => crate::constants::HA_UNIT_DISTANCE_METER,
387 NumberUnit::Centimeter => crate::constants::HA_UNIT_DISTANCE_CENTIMETER,
388 NumberUnit::Millimeter => crate::constants::HA_UNIT_DISTANCE_MILLIMETER,
389 NumberUnit::Mile => crate::constants::HA_UNIT_DISTANCE_MILE,
390 NumberUnit::NauticalMile => crate::constants::HA_UNIT_DISTANCE_NAUTICAL_MILE,
391 NumberUnit::Yard => crate::constants::HA_UNIT_DISTANCE_YARD,
392 NumberUnit::Inch => crate::constants::HA_UNIT_DISTANCE_INCH,
393 NumberUnit::MilliWatt => crate::constants::HA_UNIT_POWER_MILLIWATT,
395 NumberUnit::Watt => crate::constants::HA_UNIT_POWER_WATT,
396 NumberUnit::KiloWatt => crate::constants::HA_UNIT_POWER_KILOWATT,
397 NumberUnit::MegaWatt => crate::constants::HA_UNIT_POWER_MEGAWATT,
398 NumberUnit::GigaWatt => crate::constants::HA_UNIT_POWER_GIGAWATT,
399 NumberUnit::TeraWatt => crate::constants::HA_UNIT_POWER_TERAWATT,
400 NumberUnit::Ampere => crate::constants::HA_UNIT_CURRENT_AMPERE,
402 NumberUnit::MilliAmpere => crate::constants::HA_UNIT_CURRENT_MILLIAMPERE,
403 NumberUnit::Volt => crate::constants::HA_UNIT_VOLTAGE_VOLT,
405 NumberUnit::MilliVolt => crate::constants::HA_UNIT_VOLTAGE_MILLIVOLT,
406 NumberUnit::MicroVolt => crate::constants::HA_UNIT_VOLTAGE_MICROVOLT,
407 NumberUnit::KiloVolt => crate::constants::HA_UNIT_VOLTAGE_KILOVOLT,
408 NumberUnit::MegaVolt => crate::constants::HA_UNIT_VOLTAGE_MEGAVOLT,
409 NumberUnit::BitPerSecond => crate::constants::HA_UNIT_DATA_RATE_BIT_PER_SECOND,
411 NumberUnit::KiloBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_KILOBIT_PER_SECOND,
412 NumberUnit::MegaBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_MEGABIT_PER_SECOND,
413 NumberUnit::GigaBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_GIGABIT_PER_SECOND,
414 NumberUnit::BytePerSecond => crate::constants::HA_UNIT_DATA_RATE_BYTE_PER_SECOND,
415 NumberUnit::KiloBytePerSecond => {
416 crate::constants::HA_UNIT_DATA_RATE_KILOBYTE_PER_SECOND
417 }
418 NumberUnit::MegaBytePerSecond => {
419 crate::constants::HA_UNIT_DATA_RATE_MEGABYTE_PER_SECOND
420 }
421 NumberUnit::GigaBytePerSecond => {
422 crate::constants::HA_UNIT_DATA_RATE_GIGABYTE_PER_SECOND
423 }
424 NumberUnit::KibiBytePerSecond => {
425 crate::constants::HA_UNIT_DATA_RATE_KIBIBYTE_PER_SECOND
426 }
427 NumberUnit::MebiBytePerSecond => {
428 crate::constants::HA_UNIT_DATA_RATE_MEBIBYTE_PER_SECOND
429 }
430 NumberUnit::GibiBytePerSecond => {
431 crate::constants::HA_UNIT_DATA_RATE_GIBIBYTE_PER_SECOND
432 }
433 NumberUnit::Kilogram => crate::constants::HA_UNIT_WEIGHT_KILOGRAM,
435 NumberUnit::Gram => crate::constants::HA_UNIT_WEIGHT_GRAM,
436 NumberUnit::Milligram => crate::constants::HA_UNIT_WEIGHT_MILLIGRAM,
437 NumberUnit::Microgram => crate::constants::HA_UNIT_WEIGHT_MICROGRAM,
438 NumberUnit::Ounce => crate::constants::HA_UNIT_WEIGHT_OUNCE,
439 NumberUnit::Pound => crate::constants::HA_UNIT_WEIGHT_POUND,
440 NumberUnit::Stone => crate::constants::HA_UNIT_WEIGHT_STONE,
441 NumberUnit::Percentage => crate::constants::HA_UNIT_PERCENTAGE,
443 NumberUnit::Other(other) => other,
444 }
445 }
446}
447
448#[derive(Debug, Clone, Copy, PartialEq, Eq)]
449pub enum Unit {
450 TemperatureCelcius,
451 TemperatureKelvin,
452 TemperatureFahrenheit,
453 HumidityPercentage,
454 BatteryPercentage,
455 LightLux,
456 PressureHectoPascal,
457 EnergyKiloWattHour,
458 SignalStrengthDbm,
459 TimeMilliseconds,
460 TimeSeconds,
461 TimeMinutes,
462 TimeHours,
463 TimeDays,
464 PowerWatt,
465 PowerKiloWatt,
466 VoltageVolt,
467 CurrentAmpere,
468 DistanceMillimeter,
469 DistanceCentimeter,
470 DistanceMeter,
471 DistanceKilometer,
472 CurrencyUSD,
473 CurrencyEUR,
474 CurrencyGBP,
475 CurrencyJPY,
476 CurrencyCNY,
477 CurrencyCAD,
478 CurrencyAUD,
479 CurrencyCHF,
480 CurrencyINR,
481 CurrencyBRL,
482 CurrencyDollar,
483 CurrencyEuro,
484 CurrencyPound,
485 CurrencyYen,
486 CurrencyCent,
487 NumberJoule,
489 NumberKiloJoule,
490 NumberMegaJoule,
491 NumberGigaJoule,
492 NumberMilliWattHour,
493 NumberWattHour,
494 NumberKiloWattHour,
495 NumberMegaWattHour,
496 NumberGigaWattHour,
497 NumberTeraWattHour,
498 NumberCalorie,
499 NumberKiloCalorie,
500 NumberMegaCalorie,
501 NumberGigaCalorie,
502 NumberCelsius,
503 NumberFahrenheit,
504 NumberKelvin,
505 NumberMilliPascal,
506 NumberPascal,
507 NumberHectoPascal,
508 NumberKiloPascal,
509 NumberBar,
510 NumberCentiBar,
511 NumberMilliBar,
512 NumberMillimeterMercury,
513 NumberInchMercury,
514 NumberInchWater,
515 NumberPsi,
516 NumberLiter,
517 NumberMilliLiter,
518 NumberGallon,
519 NumberFluidOunce,
520 NumberCubicMeter,
521 NumberCubicFoot,
522 NumberCCF,
523 NumberMCF,
524 NumberFeetPerSecond,
525 NumberInchPerDay,
526 NumberInchPerHour,
527 NumberInchPerSecond,
528 NumberKilometerPerHour,
529 NumberKnot,
530 NumberMeterPerSecond,
531 NumberMilePerHour,
532 NumberMillimeterPerDay,
533 NumberMillimeterPerSecond,
534 NumberKilometer,
535 NumberMeter,
536 NumberCentimeter,
537 NumberMillimeter,
538 NumberMile,
539 NumberNauticalMile,
540 NumberYard,
541 NumberInch,
542 NumberMilliWatt,
543 NumberWatt,
544 NumberKiloWatt,
545 NumberMegaWatt,
546 NumberGigaWatt,
547 NumberTeraWatt,
548 NumberAmpere,
549 NumberMilliAmpere,
550 NumberVolt,
551 NumberMilliVolt,
552 NumberMicroVolt,
553 NumberKiloVolt,
554 NumberMegaVolt,
555 NumberBitPerSecond,
556 NumberKiloBitPerSecond,
557 NumberMegaBitPerSecond,
558 NumberGigaBitPerSecond,
559 NumberBytePerSecond,
560 NumberKiloBytePerSecond,
561 NumberMegaBytePerSecond,
562 NumberGigaBytePerSecond,
563 NumberKibiBytePerSecond,
564 NumberMebiBytePerSecond,
565 NumberGibiBytePerSecond,
566 NumberKilogram,
567 NumberGram,
568 NumberMilligram,
569 NumberMicrogram,
570 NumberOunce,
571 NumberPound,
572 NumberStone,
573 NumberPercentage,
574 Other(&'static str),
575}
576
577impl Unit {
578 pub fn as_str(&self) -> &'static str {
579 match self {
580 Unit::TemperatureCelcius => crate::constants::HA_UNIT_TEMPERATURE_CELSIUS,
581 Unit::TemperatureKelvin => crate::constants::HA_UNIT_TEMPERATURE_KELVIN,
582 Unit::TemperatureFahrenheit => crate::constants::HA_UNIT_TEMPERATURE_FAHRENHEIT,
583 Unit::HumidityPercentage => crate::constants::HA_UNIT_PERCENTAGE,
584 Unit::BatteryPercentage => crate::constants::HA_UNIT_PERCENTAGE,
585 Unit::LightLux => crate::constants::HA_UNIT_LIGHT_LUX,
586 Unit::PressureHectoPascal => crate::constants::HA_UNIT_PRESSURE_HPA,
587 Unit::EnergyKiloWattHour => crate::constants::HA_UNIT_ENERGY_KWH,
588 Unit::SignalStrengthDbm => crate::constants::HA_UNIT_SIGNAL_STRENGTH_DBM,
589 Unit::TimeMilliseconds => crate::constants::HA_UNIT_TIME_MILLISECONDS,
590 Unit::TimeSeconds => crate::constants::HA_UNIT_TIME_SECONDS,
591 Unit::TimeMinutes => crate::constants::HA_UNIT_TIME_MINUTES,
592 Unit::TimeHours => crate::constants::HA_UNIT_TIME_HOURS,
593 Unit::TimeDays => crate::constants::HA_UNIT_TIME_DAYS,
594 Unit::PowerWatt => crate::constants::HA_UNIT_POWER_WATT,
595 Unit::PowerKiloWatt => crate::constants::HA_UNIT_POWER_KILOWATT,
596 Unit::VoltageVolt => crate::constants::HA_UNIT_VOLTAGE_VOLT,
597 Unit::CurrentAmpere => crate::constants::HA_UNIT_CURRENT_AMPERE,
598 Unit::DistanceMillimeter => crate::constants::HA_UNIT_DISTANCE_MILLIMETER,
599 Unit::DistanceCentimeter => crate::constants::HA_UNIT_DISTANCE_CENTIMETER,
600 Unit::DistanceMeter => crate::constants::HA_UNIT_DISTANCE_METER,
601 Unit::DistanceKilometer => crate::constants::HA_UNIT_DISTANCE_KILOMETER,
602 Unit::CurrencyUSD => crate::constants::HA_UNIT_CURRENCY_USD,
603 Unit::CurrencyEUR => crate::constants::HA_UNIT_CURRENCY_EUR,
604 Unit::CurrencyGBP => crate::constants::HA_UNIT_CURRENCY_GBP,
605 Unit::CurrencyJPY => crate::constants::HA_UNIT_CURRENCY_JPY,
606 Unit::CurrencyCNY => crate::constants::HA_UNIT_CURRENCY_CNY,
607 Unit::CurrencyCAD => crate::constants::HA_UNIT_CURRENCY_CAD,
608 Unit::CurrencyAUD => crate::constants::HA_UNIT_CURRENCY_AUD,
609 Unit::CurrencyCHF => crate::constants::HA_UNIT_CURRENCY_CHF,
610 Unit::CurrencyINR => crate::constants::HA_UNIT_CURRENCY_INR,
611 Unit::CurrencyBRL => crate::constants::HA_UNIT_CURRENCY_BRL,
612 Unit::CurrencyDollar => crate::constants::HA_UNIT_CURRENCY_DOLLAR,
613 Unit::CurrencyEuro => crate::constants::HA_UNIT_CURRENCY_EURO,
614 Unit::CurrencyPound => crate::constants::HA_UNIT_CURRENCY_POUND,
615 Unit::CurrencyYen => crate::constants::HA_UNIT_CURRENCY_YEN,
616 Unit::CurrencyCent => crate::constants::HA_UNIT_CURRENCY_CENT,
617 Unit::NumberJoule => crate::constants::HA_UNIT_ENERGY_JOULE,
619 Unit::NumberKiloJoule => crate::constants::HA_UNIT_ENERGY_KILOJOULE,
620 Unit::NumberMegaJoule => crate::constants::HA_UNIT_ENERGY_MEGAJOULE,
621 Unit::NumberGigaJoule => crate::constants::HA_UNIT_ENERGY_GIGAJOULE,
622 Unit::NumberMilliWattHour => crate::constants::HA_UNIT_ENERGY_MILLIWATTHOUR,
623 Unit::NumberWattHour => crate::constants::HA_UNIT_ENERGY_WATTHOUR,
624 Unit::NumberKiloWattHour => crate::constants::HA_UNIT_ENERGY_KWH,
625 Unit::NumberMegaWattHour => crate::constants::HA_UNIT_ENERGY_MEGAWATTHOUR,
626 Unit::NumberGigaWattHour => crate::constants::HA_UNIT_ENERGY_GIGAWATTHOUR,
627 Unit::NumberTeraWattHour => crate::constants::HA_UNIT_ENERGY_TERAWATTHOUR,
628 Unit::NumberCalorie => crate::constants::HA_UNIT_ENERGY_CALORIE,
629 Unit::NumberKiloCalorie => crate::constants::HA_UNIT_ENERGY_KILOCALORIE,
630 Unit::NumberMegaCalorie => crate::constants::HA_UNIT_ENERGY_MEGACALORIE,
631 Unit::NumberGigaCalorie => crate::constants::HA_UNIT_ENERGY_GIGACALORIE,
632 Unit::NumberCelsius => crate::constants::HA_UNIT_TEMPERATURE_CELSIUS,
633 Unit::NumberFahrenheit => crate::constants::HA_UNIT_TEMPERATURE_FAHRENHEIT,
634 Unit::NumberKelvin => crate::constants::HA_UNIT_TEMPERATURE_KELVIN,
635 Unit::NumberMilliPascal => crate::constants::HA_UNIT_PRESSURE_MILLIPASCAL,
636 Unit::NumberPascal => crate::constants::HA_UNIT_PRESSURE_PASCAL,
637 Unit::NumberHectoPascal => crate::constants::HA_UNIT_PRESSURE_HPA,
638 Unit::NumberKiloPascal => crate::constants::HA_UNIT_PRESSURE_KILOPASCAL,
639 Unit::NumberBar => crate::constants::HA_UNIT_PRESSURE_BAR,
640 Unit::NumberCentiBar => crate::constants::HA_UNIT_PRESSURE_CENTIBAR,
641 Unit::NumberMilliBar => crate::constants::HA_UNIT_PRESSURE_MILLIBAR,
642 Unit::NumberMillimeterMercury => crate::constants::HA_UNIT_PRESSURE_MILLIMETER_MERCURY,
643 Unit::NumberInchMercury => crate::constants::HA_UNIT_PRESSURE_INCH_MERCURY,
644 Unit::NumberInchWater => crate::constants::HA_UNIT_PRESSURE_INCH_WATER,
645 Unit::NumberPsi => crate::constants::HA_UNIT_PRESSURE_PSI,
646 Unit::NumberLiter => crate::constants::HA_UNIT_VOLUME_LITER,
647 Unit::NumberMilliLiter => crate::constants::HA_UNIT_VOLUME_MILLILITER,
648 Unit::NumberGallon => crate::constants::HA_UNIT_VOLUME_GALLON,
649 Unit::NumberFluidOunce => crate::constants::HA_UNIT_VOLUME_FLUID_OUNCE,
650 Unit::NumberCubicMeter => crate::constants::HA_UNIT_VOLUME_CUBIC_METER,
651 Unit::NumberCubicFoot => crate::constants::HA_UNIT_VOLUME_CUBIC_FOOT,
652 Unit::NumberCCF => crate::constants::HA_UNIT_VOLUME_CCF,
653 Unit::NumberMCF => crate::constants::HA_UNIT_VOLUME_MCF,
654 Unit::NumberFeetPerSecond => crate::constants::HA_UNIT_SPEED_FEET_PER_SECOND,
655 Unit::NumberInchPerDay => crate::constants::HA_UNIT_SPEED_INCH_PER_DAY,
656 Unit::NumberInchPerHour => crate::constants::HA_UNIT_SPEED_INCH_PER_HOUR,
657 Unit::NumberInchPerSecond => crate::constants::HA_UNIT_SPEED_INCH_PER_SECOND,
658 Unit::NumberKilometerPerHour => crate::constants::HA_UNIT_SPEED_KILOMETER_PER_HOUR,
659 Unit::NumberKnot => crate::constants::HA_UNIT_SPEED_KNOT,
660 Unit::NumberMeterPerSecond => crate::constants::HA_UNIT_SPEED_METER_PER_SECOND,
661 Unit::NumberMilePerHour => crate::constants::HA_UNIT_SPEED_MILE_PER_HOUR,
662 Unit::NumberMillimeterPerDay => crate::constants::HA_UNIT_SPEED_MILLIMETER_PER_DAY,
663 Unit::NumberMillimeterPerSecond => {
664 crate::constants::HA_UNIT_SPEED_MILLIMETER_PER_SECOND
665 }
666 Unit::NumberKilometer => crate::constants::HA_UNIT_DISTANCE_KILOMETER,
667 Unit::NumberMeter => crate::constants::HA_UNIT_DISTANCE_METER,
668 Unit::NumberCentimeter => crate::constants::HA_UNIT_DISTANCE_CENTIMETER,
669 Unit::NumberMillimeter => crate::constants::HA_UNIT_DISTANCE_MILLIMETER,
670 Unit::NumberMile => crate::constants::HA_UNIT_DISTANCE_MILE,
671 Unit::NumberNauticalMile => crate::constants::HA_UNIT_DISTANCE_NAUTICAL_MILE,
672 Unit::NumberYard => crate::constants::HA_UNIT_DISTANCE_YARD,
673 Unit::NumberInch => crate::constants::HA_UNIT_DISTANCE_INCH,
674 Unit::NumberMilliWatt => crate::constants::HA_UNIT_POWER_MILLIWATT,
675 Unit::NumberWatt => crate::constants::HA_UNIT_POWER_WATT,
676 Unit::NumberKiloWatt => crate::constants::HA_UNIT_POWER_KILOWATT,
677 Unit::NumberMegaWatt => crate::constants::HA_UNIT_POWER_MEGAWATT,
678 Unit::NumberGigaWatt => crate::constants::HA_UNIT_POWER_GIGAWATT,
679 Unit::NumberTeraWatt => crate::constants::HA_UNIT_POWER_TERAWATT,
680 Unit::NumberAmpere => crate::constants::HA_UNIT_CURRENT_AMPERE,
681 Unit::NumberMilliAmpere => crate::constants::HA_UNIT_CURRENT_MILLIAMPERE,
682 Unit::NumberVolt => crate::constants::HA_UNIT_VOLTAGE_VOLT,
683 Unit::NumberMilliVolt => crate::constants::HA_UNIT_VOLTAGE_MILLIVOLT,
684 Unit::NumberMicroVolt => crate::constants::HA_UNIT_VOLTAGE_MICROVOLT,
685 Unit::NumberKiloVolt => crate::constants::HA_UNIT_VOLTAGE_KILOVOLT,
686 Unit::NumberMegaVolt => crate::constants::HA_UNIT_VOLTAGE_MEGAVOLT,
687 Unit::NumberBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_BIT_PER_SECOND,
688 Unit::NumberKiloBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_KILOBIT_PER_SECOND,
689 Unit::NumberMegaBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_MEGABIT_PER_SECOND,
690 Unit::NumberGigaBitPerSecond => crate::constants::HA_UNIT_DATA_RATE_GIGABIT_PER_SECOND,
691 Unit::NumberBytePerSecond => crate::constants::HA_UNIT_DATA_RATE_BYTE_PER_SECOND,
692 Unit::NumberKiloBytePerSecond => {
693 crate::constants::HA_UNIT_DATA_RATE_KILOBYTE_PER_SECOND
694 }
695 Unit::NumberMegaBytePerSecond => {
696 crate::constants::HA_UNIT_DATA_RATE_MEGABYTE_PER_SECOND
697 }
698 Unit::NumberGigaBytePerSecond => {
699 crate::constants::HA_UNIT_DATA_RATE_GIGABYTE_PER_SECOND
700 }
701 Unit::NumberKibiBytePerSecond => {
702 crate::constants::HA_UNIT_DATA_RATE_KIBIBYTE_PER_SECOND
703 }
704 Unit::NumberMebiBytePerSecond => {
705 crate::constants::HA_UNIT_DATA_RATE_MEBIBYTE_PER_SECOND
706 }
707 Unit::NumberGibiBytePerSecond => {
708 crate::constants::HA_UNIT_DATA_RATE_GIBIBYTE_PER_SECOND
709 }
710 Unit::NumberKilogram => crate::constants::HA_UNIT_WEIGHT_KILOGRAM,
711 Unit::NumberGram => crate::constants::HA_UNIT_WEIGHT_GRAM,
712 Unit::NumberMilligram => crate::constants::HA_UNIT_WEIGHT_MILLIGRAM,
713 Unit::NumberMicrogram => crate::constants::HA_UNIT_WEIGHT_MICROGRAM,
714 Unit::NumberOunce => crate::constants::HA_UNIT_WEIGHT_OUNCE,
715 Unit::NumberPound => crate::constants::HA_UNIT_WEIGHT_POUND,
716 Unit::NumberStone => crate::constants::HA_UNIT_WEIGHT_STONE,
717 Unit::NumberPercentage => crate::constants::HA_UNIT_PERCENTAGE,
718 Unit::Other(other) => other,
719 }
720 }
721}
722
723impl From<TemperatureUnit> for Unit {
725 fn from(unit: TemperatureUnit) -> Self {
726 match unit {
727 TemperatureUnit::Celcius => Unit::TemperatureCelcius,
728 TemperatureUnit::Kelvin => Unit::TemperatureKelvin,
729 TemperatureUnit::Fahrenheit => Unit::TemperatureFahrenheit,
730 TemperatureUnit::Other(other) => Unit::Other(other),
731 }
732 }
733}
734
735impl From<HumidityUnit> for Unit {
736 fn from(unit: HumidityUnit) -> Self {
737 match unit {
738 HumidityUnit::Percentage => Unit::HumidityPercentage,
739 HumidityUnit::Other(other) => Unit::Other(other),
740 }
741 }
742}
743
744impl From<BatteryUnit> for Unit {
745 fn from(unit: BatteryUnit) -> Self {
746 match unit {
747 BatteryUnit::Percentage => Unit::BatteryPercentage,
748 }
749 }
750}
751
752impl From<LightUnit> for Unit {
753 fn from(unit: LightUnit) -> Self {
754 match unit {
755 LightUnit::Lux => Unit::LightLux,
756 }
757 }
758}
759
760impl From<PressureUnit> for Unit {
761 fn from(unit: PressureUnit) -> Self {
762 match unit {
763 PressureUnit::HectoPascal => Unit::PressureHectoPascal,
764 }
765 }
766}
767
768impl From<SignalStrengthUnit> for Unit {
769 fn from(unit: SignalStrengthUnit) -> Self {
770 match unit {
771 SignalStrengthUnit::Dbm => Unit::SignalStrengthDbm,
772 }
773 }
774}
775
776impl From<EnergyUnit> for Unit {
777 fn from(unit: EnergyUnit) -> Self {
778 match unit {
779 EnergyUnit::KiloWattHour => Unit::EnergyKiloWattHour,
780 }
781 }
782}
783
784impl From<TimeUnit> for Unit {
785 fn from(unit: TimeUnit) -> Self {
786 match unit {
787 TimeUnit::Milliseconds => Unit::TimeMilliseconds,
788 TimeUnit::Seconds => Unit::TimeSeconds,
789 TimeUnit::Minutes => Unit::TimeMinutes,
790 TimeUnit::Hours => Unit::TimeHours,
791 TimeUnit::Days => Unit::TimeDays,
792 }
793 }
794}
795
796impl From<PowerUnit> for Unit {
797 fn from(unit: PowerUnit) -> Self {
798 match unit {
799 PowerUnit::Watt => Unit::PowerWatt,
800 PowerUnit::KiloWatt => Unit::PowerKiloWatt,
801 }
802 }
803}
804
805impl From<VoltageUnit> for Unit {
806 fn from(unit: VoltageUnit) -> Self {
807 match unit {
808 VoltageUnit::Volt => Unit::VoltageVolt,
809 }
810 }
811}
812
813impl From<CurrentUnit> for Unit {
814 fn from(unit: CurrentUnit) -> Self {
815 match unit {
816 CurrentUnit::Ampere => Unit::CurrentAmpere,
817 }
818 }
819}
820
821impl From<DistanceUnit> for Unit {
822 fn from(unit: DistanceUnit) -> Self {
823 match unit {
824 DistanceUnit::Millimeter => Unit::DistanceMillimeter,
825 DistanceUnit::Centimeter => Unit::DistanceCentimeter,
826 DistanceUnit::Meter => Unit::DistanceMeter,
827 DistanceUnit::Kilometer => Unit::DistanceKilometer,
828 }
829 }
830}
831
832impl From<CurrencyUnit> for Unit {
833 fn from(unit: CurrencyUnit) -> Self {
834 match unit {
835 CurrencyUnit::USD => Unit::CurrencyUSD,
836 CurrencyUnit::EUR => Unit::CurrencyEUR,
837 CurrencyUnit::GBP => Unit::CurrencyGBP,
838 CurrencyUnit::JPY => Unit::CurrencyJPY,
839 CurrencyUnit::CNY => Unit::CurrencyCNY,
840 CurrencyUnit::CAD => Unit::CurrencyCAD,
841 CurrencyUnit::AUD => Unit::CurrencyAUD,
842 CurrencyUnit::CHF => Unit::CurrencyCHF,
843 CurrencyUnit::INR => Unit::CurrencyINR,
844 CurrencyUnit::BRL => Unit::CurrencyBRL,
845 CurrencyUnit::Dollar => Unit::CurrencyDollar,
846 CurrencyUnit::Euro => Unit::CurrencyEuro,
847 CurrencyUnit::Pound => Unit::CurrencyPound,
848 CurrencyUnit::Yen => Unit::CurrencyYen,
849 CurrencyUnit::Cent => Unit::CurrencyCent,
850 CurrencyUnit::Other(other) => Unit::Other(other),
851 }
852 }
853}
854
855impl From<NumberUnit> for Unit {
856 fn from(unit: NumberUnit) -> Self {
857 match unit {
858 NumberUnit::Joule => Unit::NumberJoule,
859 NumberUnit::KiloJoule => Unit::NumberKiloJoule,
860 NumberUnit::MegaJoule => Unit::NumberMegaJoule,
861 NumberUnit::GigaJoule => Unit::NumberGigaJoule,
862 NumberUnit::MilliWattHour => Unit::NumberMilliWattHour,
863 NumberUnit::WattHour => Unit::NumberWattHour,
864 NumberUnit::KiloWattHour => Unit::NumberKiloWattHour,
865 NumberUnit::MegaWattHour => Unit::NumberMegaWattHour,
866 NumberUnit::GigaWattHour => Unit::NumberGigaWattHour,
867 NumberUnit::TeraWattHour => Unit::NumberTeraWattHour,
868 NumberUnit::Calorie => Unit::NumberCalorie,
869 NumberUnit::KiloCalorie => Unit::NumberKiloCalorie,
870 NumberUnit::MegaCalorie => Unit::NumberMegaCalorie,
871 NumberUnit::GigaCalorie => Unit::NumberGigaCalorie,
872 NumberUnit::Celsius => Unit::NumberCelsius,
873 NumberUnit::Fahrenheit => Unit::NumberFahrenheit,
874 NumberUnit::Kelvin => Unit::NumberKelvin,
875 NumberUnit::MilliPascal => Unit::NumberMilliPascal,
876 NumberUnit::Pascal => Unit::NumberPascal,
877 NumberUnit::HectoPascal => Unit::NumberHectoPascal,
878 NumberUnit::KiloPascal => Unit::NumberKiloPascal,
879 NumberUnit::Bar => Unit::NumberBar,
880 NumberUnit::CentiBar => Unit::NumberCentiBar,
881 NumberUnit::MilliBar => Unit::NumberMilliBar,
882 NumberUnit::MillimeterMercury => Unit::NumberMillimeterMercury,
883 NumberUnit::InchMercury => Unit::NumberInchMercury,
884 NumberUnit::InchWater => Unit::NumberInchWater,
885 NumberUnit::Psi => Unit::NumberPsi,
886 NumberUnit::Liter => Unit::NumberLiter,
887 NumberUnit::MilliLiter => Unit::NumberMilliLiter,
888 NumberUnit::Gallon => Unit::NumberGallon,
889 NumberUnit::FluidOunce => Unit::NumberFluidOunce,
890 NumberUnit::CubicMeter => Unit::NumberCubicMeter,
891 NumberUnit::CubicFoot => Unit::NumberCubicFoot,
892 NumberUnit::CCF => Unit::NumberCCF,
893 NumberUnit::MCF => Unit::NumberMCF,
894 NumberUnit::FeetPerSecond => Unit::NumberFeetPerSecond,
895 NumberUnit::InchPerDay => Unit::NumberInchPerDay,
896 NumberUnit::InchPerHour => Unit::NumberInchPerHour,
897 NumberUnit::InchPerSecond => Unit::NumberInchPerSecond,
898 NumberUnit::KilometerPerHour => Unit::NumberKilometerPerHour,
899 NumberUnit::Knot => Unit::NumberKnot,
900 NumberUnit::MeterPerSecond => Unit::NumberMeterPerSecond,
901 NumberUnit::MilePerHour => Unit::NumberMilePerHour,
902 NumberUnit::MillimeterPerDay => Unit::NumberMillimeterPerDay,
903 NumberUnit::MillimeterPerSecond => Unit::NumberMillimeterPerSecond,
904 NumberUnit::Kilometer => Unit::NumberKilometer,
905 NumberUnit::Meter => Unit::NumberMeter,
906 NumberUnit::Centimeter => Unit::NumberCentimeter,
907 NumberUnit::Millimeter => Unit::NumberMillimeter,
908 NumberUnit::Mile => Unit::NumberMile,
909 NumberUnit::NauticalMile => Unit::NumberNauticalMile,
910 NumberUnit::Yard => Unit::NumberYard,
911 NumberUnit::Inch => Unit::NumberInch,
912 NumberUnit::MilliWatt => Unit::NumberMilliWatt,
913 NumberUnit::Watt => Unit::NumberWatt,
914 NumberUnit::KiloWatt => Unit::NumberKiloWatt,
915 NumberUnit::MegaWatt => Unit::NumberMegaWatt,
916 NumberUnit::GigaWatt => Unit::NumberGigaWatt,
917 NumberUnit::TeraWatt => Unit::NumberTeraWatt,
918 NumberUnit::Ampere => Unit::NumberAmpere,
919 NumberUnit::MilliAmpere => Unit::NumberMilliAmpere,
920 NumberUnit::Volt => Unit::NumberVolt,
921 NumberUnit::MilliVolt => Unit::NumberMilliVolt,
922 NumberUnit::MicroVolt => Unit::NumberMicroVolt,
923 NumberUnit::KiloVolt => Unit::NumberKiloVolt,
924 NumberUnit::MegaVolt => Unit::NumberMegaVolt,
925 NumberUnit::BitPerSecond => Unit::NumberBitPerSecond,
926 NumberUnit::KiloBitPerSecond => Unit::NumberKiloBitPerSecond,
927 NumberUnit::MegaBitPerSecond => Unit::NumberMegaBitPerSecond,
928 NumberUnit::GigaBitPerSecond => Unit::NumberGigaBitPerSecond,
929 NumberUnit::BytePerSecond => Unit::NumberBytePerSecond,
930 NumberUnit::KiloBytePerSecond => Unit::NumberKiloBytePerSecond,
931 NumberUnit::MegaBytePerSecond => Unit::NumberMegaBytePerSecond,
932 NumberUnit::GigaBytePerSecond => Unit::NumberGigaBytePerSecond,
933 NumberUnit::KibiBytePerSecond => Unit::NumberKibiBytePerSecond,
934 NumberUnit::MebiBytePerSecond => Unit::NumberMebiBytePerSecond,
935 NumberUnit::GibiBytePerSecond => Unit::NumberGibiBytePerSecond,
936 NumberUnit::Kilogram => Unit::NumberKilogram,
937 NumberUnit::Gram => Unit::NumberGram,
938 NumberUnit::Milligram => Unit::NumberMilligram,
939 NumberUnit::Microgram => Unit::NumberMicrogram,
940 NumberUnit::Ounce => Unit::NumberOunce,
941 NumberUnit::Pound => Unit::NumberPound,
942 NumberUnit::Stone => Unit::NumberStone,
943 NumberUnit::Percentage => Unit::NumberPercentage,
944 NumberUnit::Other(other) => Unit::Other(other),
945 }
946 }
947}
948
949#[derive(Debug, Clone, Copy, PartialEq, Eq)]
951pub struct UnitConversionError;
952
953impl TryFrom<Unit> for TemperatureUnit {
954 type Error = UnitConversionError;
955
956 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
957 match unit {
958 Unit::TemperatureCelcius => Ok(TemperatureUnit::Celcius),
959 Unit::TemperatureKelvin => Ok(TemperatureUnit::Kelvin),
960 Unit::TemperatureFahrenheit => Ok(TemperatureUnit::Fahrenheit),
961 Unit::Other(other) => Ok(TemperatureUnit::Other(other)),
962 _ => Err(UnitConversionError),
963 }
964 }
965}
966
967impl TryFrom<Unit> for HumidityUnit {
968 type Error = UnitConversionError;
969
970 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
971 match unit {
972 Unit::HumidityPercentage => Ok(HumidityUnit::Percentage),
973 Unit::Other(other) => Ok(HumidityUnit::Other(other)),
974 _ => Err(UnitConversionError),
975 }
976 }
977}
978
979impl TryFrom<Unit> for BatteryUnit {
980 type Error = UnitConversionError;
981
982 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
983 match unit {
984 Unit::BatteryPercentage => Ok(BatteryUnit::Percentage),
985 _ => Err(UnitConversionError),
986 }
987 }
988}
989
990impl TryFrom<Unit> for LightUnit {
991 type Error = UnitConversionError;
992
993 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
994 match unit {
995 Unit::LightLux => Ok(LightUnit::Lux),
996 _ => Err(UnitConversionError),
997 }
998 }
999}
1000
1001impl TryFrom<Unit> for PressureUnit {
1002 type Error = UnitConversionError;
1003
1004 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1005 match unit {
1006 Unit::PressureHectoPascal => Ok(PressureUnit::HectoPascal),
1007 _ => Err(UnitConversionError),
1008 }
1009 }
1010}
1011
1012impl TryFrom<Unit> for SignalStrengthUnit {
1013 type Error = UnitConversionError;
1014
1015 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1016 match unit {
1017 Unit::SignalStrengthDbm => Ok(SignalStrengthUnit::Dbm),
1018 _ => Err(UnitConversionError),
1019 }
1020 }
1021}
1022
1023impl TryFrom<Unit> for EnergyUnit {
1024 type Error = UnitConversionError;
1025
1026 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1027 match unit {
1028 Unit::EnergyKiloWattHour => Ok(EnergyUnit::KiloWattHour),
1029 _ => Err(UnitConversionError),
1030 }
1031 }
1032}
1033
1034impl TryFrom<Unit> for TimeUnit {
1035 type Error = UnitConversionError;
1036
1037 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1038 match unit {
1039 Unit::TimeMilliseconds => Ok(TimeUnit::Milliseconds),
1040 Unit::TimeSeconds => Ok(TimeUnit::Seconds),
1041 Unit::TimeMinutes => Ok(TimeUnit::Minutes),
1042 Unit::TimeHours => Ok(TimeUnit::Hours),
1043 Unit::TimeDays => Ok(TimeUnit::Days),
1044 _ => Err(UnitConversionError),
1045 }
1046 }
1047}
1048
1049impl TryFrom<Unit> for PowerUnit {
1050 type Error = UnitConversionError;
1051
1052 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1053 match unit {
1054 Unit::PowerWatt => Ok(PowerUnit::Watt),
1055 Unit::PowerKiloWatt => Ok(PowerUnit::KiloWatt),
1056 _ => Err(UnitConversionError),
1057 }
1058 }
1059}
1060
1061impl TryFrom<Unit> for VoltageUnit {
1062 type Error = UnitConversionError;
1063
1064 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1065 match unit {
1066 Unit::VoltageVolt => Ok(VoltageUnit::Volt),
1067 _ => Err(UnitConversionError),
1068 }
1069 }
1070}
1071
1072impl TryFrom<Unit> for CurrentUnit {
1073 type Error = UnitConversionError;
1074
1075 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1076 match unit {
1077 Unit::CurrentAmpere => Ok(CurrentUnit::Ampere),
1078 _ => Err(UnitConversionError),
1079 }
1080 }
1081}
1082
1083impl TryFrom<Unit> for DistanceUnit {
1084 type Error = UnitConversionError;
1085
1086 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1087 match unit {
1088 Unit::DistanceMillimeter => Ok(DistanceUnit::Millimeter),
1089 Unit::DistanceCentimeter => Ok(DistanceUnit::Centimeter),
1090 Unit::DistanceMeter => Ok(DistanceUnit::Meter),
1091 Unit::DistanceKilometer => Ok(DistanceUnit::Kilometer),
1092 _ => Err(UnitConversionError),
1093 }
1094 }
1095}
1096
1097impl TryFrom<Unit> for CurrencyUnit {
1098 type Error = UnitConversionError;
1099
1100 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1101 match unit {
1102 Unit::CurrencyUSD => Ok(CurrencyUnit::USD),
1103 Unit::CurrencyEUR => Ok(CurrencyUnit::EUR),
1104 Unit::CurrencyGBP => Ok(CurrencyUnit::GBP),
1105 Unit::CurrencyJPY => Ok(CurrencyUnit::JPY),
1106 Unit::CurrencyCNY => Ok(CurrencyUnit::CNY),
1107 Unit::CurrencyCAD => Ok(CurrencyUnit::CAD),
1108 Unit::CurrencyAUD => Ok(CurrencyUnit::AUD),
1109 Unit::CurrencyCHF => Ok(CurrencyUnit::CHF),
1110 Unit::CurrencyINR => Ok(CurrencyUnit::INR),
1111 Unit::CurrencyBRL => Ok(CurrencyUnit::BRL),
1112 Unit::CurrencyDollar => Ok(CurrencyUnit::Dollar),
1113 Unit::CurrencyEuro => Ok(CurrencyUnit::Euro),
1114 Unit::CurrencyPound => Ok(CurrencyUnit::Pound),
1115 Unit::CurrencyYen => Ok(CurrencyUnit::Yen),
1116 Unit::CurrencyCent => Ok(CurrencyUnit::Cent),
1117 Unit::Other(other) => Ok(CurrencyUnit::Other(other)),
1118 _ => Err(UnitConversionError),
1119 }
1120 }
1121}
1122
1123impl TryFrom<Unit> for NumberUnit {
1124 type Error = UnitConversionError;
1125
1126 fn try_from(unit: Unit) -> Result<Self, Self::Error> {
1127 match unit {
1128 Unit::NumberJoule => Ok(NumberUnit::Joule),
1129 Unit::NumberKiloJoule => Ok(NumberUnit::KiloJoule),
1130 Unit::NumberMegaJoule => Ok(NumberUnit::MegaJoule),
1131 Unit::NumberGigaJoule => Ok(NumberUnit::GigaJoule),
1132 Unit::NumberMilliWattHour => Ok(NumberUnit::MilliWattHour),
1133 Unit::NumberWattHour => Ok(NumberUnit::WattHour),
1134 Unit::NumberKiloWattHour => Ok(NumberUnit::KiloWattHour),
1135 Unit::NumberMegaWattHour => Ok(NumberUnit::MegaWattHour),
1136 Unit::NumberGigaWattHour => Ok(NumberUnit::GigaWattHour),
1137 Unit::NumberTeraWattHour => Ok(NumberUnit::TeraWattHour),
1138 Unit::NumberCalorie => Ok(NumberUnit::Calorie),
1139 Unit::NumberKiloCalorie => Ok(NumberUnit::KiloCalorie),
1140 Unit::NumberMegaCalorie => Ok(NumberUnit::MegaCalorie),
1141 Unit::NumberGigaCalorie => Ok(NumberUnit::GigaCalorie),
1142 Unit::NumberCelsius => Ok(NumberUnit::Celsius),
1143 Unit::NumberFahrenheit => Ok(NumberUnit::Fahrenheit),
1144 Unit::NumberKelvin => Ok(NumberUnit::Kelvin),
1145 Unit::NumberMilliPascal => Ok(NumberUnit::MilliPascal),
1146 Unit::NumberPascal => Ok(NumberUnit::Pascal),
1147 Unit::NumberHectoPascal => Ok(NumberUnit::HectoPascal),
1148 Unit::NumberKiloPascal => Ok(NumberUnit::KiloPascal),
1149 Unit::NumberBar => Ok(NumberUnit::Bar),
1150 Unit::NumberCentiBar => Ok(NumberUnit::CentiBar),
1151 Unit::NumberMilliBar => Ok(NumberUnit::MilliBar),
1152 Unit::NumberMillimeterMercury => Ok(NumberUnit::MillimeterMercury),
1153 Unit::NumberInchMercury => Ok(NumberUnit::InchMercury),
1154 Unit::NumberInchWater => Ok(NumberUnit::InchWater),
1155 Unit::NumberPsi => Ok(NumberUnit::Psi),
1156 Unit::NumberLiter => Ok(NumberUnit::Liter),
1157 Unit::NumberMilliLiter => Ok(NumberUnit::MilliLiter),
1158 Unit::NumberGallon => Ok(NumberUnit::Gallon),
1159 Unit::NumberFluidOunce => Ok(NumberUnit::FluidOunce),
1160 Unit::NumberCubicMeter => Ok(NumberUnit::CubicMeter),
1161 Unit::NumberCubicFoot => Ok(NumberUnit::CubicFoot),
1162 Unit::NumberCCF => Ok(NumberUnit::CCF),
1163 Unit::NumberMCF => Ok(NumberUnit::MCF),
1164 Unit::NumberFeetPerSecond => Ok(NumberUnit::FeetPerSecond),
1165 Unit::NumberInchPerDay => Ok(NumberUnit::InchPerDay),
1166 Unit::NumberInchPerHour => Ok(NumberUnit::InchPerHour),
1167 Unit::NumberInchPerSecond => Ok(NumberUnit::InchPerSecond),
1168 Unit::NumberKilometerPerHour => Ok(NumberUnit::KilometerPerHour),
1169 Unit::NumberKnot => Ok(NumberUnit::Knot),
1170 Unit::NumberMeterPerSecond => Ok(NumberUnit::MeterPerSecond),
1171 Unit::NumberMilePerHour => Ok(NumberUnit::MilePerHour),
1172 Unit::NumberMillimeterPerDay => Ok(NumberUnit::MillimeterPerDay),
1173 Unit::NumberMillimeterPerSecond => Ok(NumberUnit::MillimeterPerSecond),
1174 Unit::NumberKilometer => Ok(NumberUnit::Kilometer),
1175 Unit::NumberMeter => Ok(NumberUnit::Meter),
1176 Unit::NumberCentimeter => Ok(NumberUnit::Centimeter),
1177 Unit::NumberMillimeter => Ok(NumberUnit::Millimeter),
1178 Unit::NumberMile => Ok(NumberUnit::Mile),
1179 Unit::NumberNauticalMile => Ok(NumberUnit::NauticalMile),
1180 Unit::NumberYard => Ok(NumberUnit::Yard),
1181 Unit::NumberInch => Ok(NumberUnit::Inch),
1182 Unit::NumberMilliWatt => Ok(NumberUnit::MilliWatt),
1183 Unit::NumberWatt => Ok(NumberUnit::Watt),
1184 Unit::NumberKiloWatt => Ok(NumberUnit::KiloWatt),
1185 Unit::NumberMegaWatt => Ok(NumberUnit::MegaWatt),
1186 Unit::NumberGigaWatt => Ok(NumberUnit::GigaWatt),
1187 Unit::NumberTeraWatt => Ok(NumberUnit::TeraWatt),
1188 Unit::NumberAmpere => Ok(NumberUnit::Ampere),
1189 Unit::NumberMilliAmpere => Ok(NumberUnit::MilliAmpere),
1190 Unit::NumberVolt => Ok(NumberUnit::Volt),
1191 Unit::NumberMilliVolt => Ok(NumberUnit::MilliVolt),
1192 Unit::NumberMicroVolt => Ok(NumberUnit::MicroVolt),
1193 Unit::NumberKiloVolt => Ok(NumberUnit::KiloVolt),
1194 Unit::NumberMegaVolt => Ok(NumberUnit::MegaVolt),
1195 Unit::NumberBitPerSecond => Ok(NumberUnit::BitPerSecond),
1196 Unit::NumberKiloBitPerSecond => Ok(NumberUnit::KiloBitPerSecond),
1197 Unit::NumberMegaBitPerSecond => Ok(NumberUnit::MegaBitPerSecond),
1198 Unit::NumberGigaBitPerSecond => Ok(NumberUnit::GigaBitPerSecond),
1199 Unit::NumberBytePerSecond => Ok(NumberUnit::BytePerSecond),
1200 Unit::NumberKiloBytePerSecond => Ok(NumberUnit::KiloBytePerSecond),
1201 Unit::NumberMegaBytePerSecond => Ok(NumberUnit::MegaBytePerSecond),
1202 Unit::NumberGigaBytePerSecond => Ok(NumberUnit::GigaBytePerSecond),
1203 Unit::NumberKibiBytePerSecond => Ok(NumberUnit::KibiBytePerSecond),
1204 Unit::NumberMebiBytePerSecond => Ok(NumberUnit::MebiBytePerSecond),
1205 Unit::NumberGibiBytePerSecond => Ok(NumberUnit::GibiBytePerSecond),
1206 Unit::NumberKilogram => Ok(NumberUnit::Kilogram),
1207 Unit::NumberGram => Ok(NumberUnit::Gram),
1208 Unit::NumberMilligram => Ok(NumberUnit::Milligram),
1209 Unit::NumberMicrogram => Ok(NumberUnit::Microgram),
1210 Unit::NumberOunce => Ok(NumberUnit::Ounce),
1211 Unit::NumberPound => Ok(NumberUnit::Pound),
1212 Unit::NumberStone => Ok(NumberUnit::Stone),
1213 Unit::NumberPercentage => Ok(NumberUnit::Percentage),
1214 Unit::Other(other) => Ok(NumberUnit::Other(other)),
1215 _ => Err(UnitConversionError),
1216 }
1217 }
1218}