Skip to main content

unit_converter_rust/
lib.rs

1//! Unit Converter Library
2//!
3//! A simple library to convert between various units of measurement.
4//! It currently supports conversions between:
5//! - Kilometers and meters
6//! - Kilometers and miles
7//! - Hours and minutes
8//! - Minutes and seconds
9//!
10//! ## Example Usage
11//!
12//! ```
13//! use unit_converter::*;
14//! 
15//! // Convert 1 kilometer to meters
16//! let meters = km2m(1.0);
17//! assert_eq!(meters, 1000.0);
18//! ```
19
20/// Converts kilometers to meters
21/// 
22/// # Arguments
23/// * `km` - Distance in kilometers
24/// 
25/// # Returns
26/// Distance in meters
27/// 
28/// # Example
29/// ```
30/// use unit_converter::*;
31/// 
32/// assert_eq!(km2m(1.0), 1000.0);
33/// ```
34pub fn km2m(km: f64) -> f64 {
35    km * 1000.0
36}
37
38/// Converts kilometers to miles
39/// 
40/// # Arguments
41/// * `km` - Distance in kilometers
42/// 
43/// # Returns
44/// Distance in miles
45/// 
46/// # Example
47/// ```
48/// use unit_converter::*;
49/// 
50/// assert!((km2mi(1.0) - 0.621371).abs() < 1e-6);
51/// ```
52pub fn km2mi(km: f64) -> f64 {
53    km * 0.62137119224
54}
55
56/// Converts hours to minutes
57/// 
58/// # Arguments
59/// * `hour` - Time in hours
60/// 
61/// # Returns
62/// Time in minutes
63/// 
64/// # Example
65/// ```
66/// use unit_converter::*;
67/// 
68/// assert_eq!(hour2min(1.0), 60.0);
69/// ```
70pub fn hour2min(hour: f64) -> f64 {
71    hour * 60.0
72}
73
74/// Converts minutes to seconds
75/// 
76/// # Arguments
77/// * `min` - Time in minutes
78/// 
79/// # Returns
80/// Time in seconds
81/// 
82/// # Example
83/// ```
84/// use unit_converter::*;
85/// 
86/// assert_eq!(min2sec(1.0), 60.0);
87/// ```
88pub fn min2sec(min: f64) -> f64 {
89    min * 60.0
90}
91
92/// Converts meters to kilometers
93/// 
94/// # Arguments
95/// * `meter` - Distance in meters
96/// 
97/// # Returns
98/// Distance in kilometers
99/// 
100/// # Example
101/// ```
102/// use unit_converter::*;
103/// 
104/// assert_eq!(meter2km(1000.0), 1.0);
105/// ```
106pub fn meter2km(meter: f64) -> f64 {
107    meter / 1000.0
108}
109
110#[cfg(test)]
111mod tests {
112    use super::*;
113
114    #[test]
115    fn test_meters_to_kilometers() {
116        assert_eq!(meter2km(1000.0), 1.0);
117    }
118
119    #[test]
120    fn test_km2mi() {
121        assert!((km2mi(1.0) - 0.621371).abs() < 1e-6);
122    }
123
124    #[test]
125    fn test_hour2min() {
126        assert_eq!(hour2min(1.0), 60.0);
127    }
128
129    #[test]
130    fn test_min2sec() {
131        assert_eq!(min2sec(1.0), 60.0);
132    }
133}