@@ -11,11 +11,11 @@ use actix_web::{middleware, web, App, HttpServer};
11
11
use bincode:: deserialize_from;
12
12
use graph:: Graph ;
13
13
use serde:: { Deserialize , Serialize } ;
14
+ use std:: collections:: HashMap ;
14
15
use std:: fs:: File ;
15
16
use std:: io:: BufReader ;
16
17
use std:: path:: Path ;
17
18
use std:: time:: Instant ;
18
- use std:: collections:: HashMap ;
19
19
20
20
#[ derive( Copy , Clone , Deserialize , Debug ) ]
21
21
pub struct Way {
@@ -37,7 +37,7 @@ struct Input {
37
37
nodes : Vec < Node > ,
38
38
ways : Vec < Way > ,
39
39
offset : Vec < usize > ,
40
- grid : HashMap < ( usize , usize ) , Vec < usize > >
40
+ grid : HashMap < ( usize , usize ) , Vec < usize > > ,
41
41
}
42
42
43
43
#[ derive( Debug , Deserialize , Serialize ) ]
@@ -78,14 +78,23 @@ fn query(request: web::Json<Query>, dijkstra: web::Data<Graph>) -> web::Json<Res
78
78
println ! ( "### duration for find_path(): {:?}" , timing. elapsed( ) ) ;
79
79
80
80
let result: Vec < Node > ;
81
- let mut cost: String ;
81
+ let mut cost: String = "" . to_string ( ) ;
82
82
match tmp {
83
83
Some ( ( path, path_cost) ) => {
84
84
result = dijkstra. get_coordinates ( path) ;
85
- cost = path_cost. to_string ( ) ;
86
85
match by_distance {
87
- false => cost. push_str ( " hour" ) ,
88
- true => cost. push_str ( " km" ) ,
86
+ false => {
87
+ if path_cost. trunc ( ) >= 1.0 {
88
+ cost = path_cost. trunc ( ) . to_string ( ) ;
89
+ cost. push_str ( "h " ) ;
90
+ }
91
+ cost. push_str ( & format ! ( "{:.0}" , path_cost. fract( ) * 60.0 ) ) ;
92
+ cost. push_str ( "min" ) ;
93
+ }
94
+ true => {
95
+ cost = format ! ( "{:.2}" , path_cost) ;
96
+ cost. push_str ( "km" ) ;
97
+ }
89
98
} ;
90
99
}
91
100
None => {
0 commit comments