Skip to content

Commit f906f64

Browse files
committed
clearer code
1 parent b0fab14 commit f906f64

1 file changed

Lines changed: 22 additions & 13 deletions

File tree

src/lib.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,24 +71,33 @@ mod gps_data_codec {
7171

7272
#[pyfunction]
7373
fn decode(input: String) -> PyResult<Vec<(i64, f64, f64)>> {
74-
let mut vals: [i64; 3] = [YEAR2010, 0, 0];
75-
let mut bytes_consumed: u32 = 0;
76-
let mut decoding_result: DecodingResult;
7774
let mut encoded = input.as_bytes().into_iter();
7875
let encoded_length: u32 = encoded.len() as u32;
79-
let mut output: Vec<(i64, f64, f64)> = Vec::new();
80-
76+
let mut bytes_consumed: u32 = 0;
77+
let mut timestamp: i64 = YEAR2010;
78+
let mut latitude: i64 = 0;
79+
let mut longitude: i64 = 0;
80+
8181
while bytes_consumed < encoded_length {
82-
for (i, val) in vals.iter_mut().enumerate() {
83-
if i == 0 && bytes_consumed != 0 {
84-
decoding_result = decode_unsigned_value_from_string(&mut encoded);
85-
} else {
86-
decoding_result = decode_signed_value_from_string(&mut encoded);
87-
}
82+
if bytes_consumed == 0 {
83+
let decoding_result = decode_signed_value_from_string(&mut encoded);
8884
bytes_consumed += decoding_result.offset;
89-
*val += decoding_result.value;
85+
timestamp += decoding_result.value;
86+
} else {
87+
let decoding_result = decode_unsigned_value_from_string(&mut encoded);
88+
bytes_consumed += decoding_result.offset;
89+
timestamp += decoding_result.value;
9090
}
91-
output.push((vals[0], (vals[1] as f64) / 1e5, (vals[2] as f64) / 1e5));
91+
92+
let decoding_result = decode_signed_value_from_string(&mut encoded);
93+
bytes_consumed += decoding_result.offset;
94+
latitude += decoding_result.value;
95+
96+
let decoding_result = decode_signed_value_from_string(&mut encoded);
97+
bytes_consumed += decoding_result.offset;
98+
longitude += decoding_result.value;
99+
100+
output.push((timestamp, (latitude as f64) / 1e5, (longitude as f64) / 1e5));
92101
}
93102
Ok(output)
94103
}

0 commit comments

Comments
 (0)