1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
use crate::directions::request::Request;
impl<'a> Request<'a> {
/// Specifies whether the waypoint order should be optimized or not.
///
/// ## Arguments
///
/// * `waypoint_optimization` ‧ Specifies whether the waypoints should be
/// rearranged into the most time-efficient order or not.
///
/// ## Description
///
/// [Optimize your waypoints](https://developers.google.com/maps/documentation/directions/intro#OptimizeWaypoints)
/// ----------------------------------------------------------------------------------------
///
/// By default, the Directions service calculates a route through the
/// provided waypoints in their given order. Optionally, you may pass
/// `optimize:true` as the first argument within the `waypoints` parameter
/// to allow the Directions service to optimize the provided route by
/// rearranging the waypoints in a more efficient order. (This optimization
/// is an application of the [traveling salesperson
/// problem](https://en.wikipedia.org/wiki/Travelling_salesman_problem).)
/// Travel time is the primary factor which is optimized, but other factors
/// such as distance, number of turns and many more may be taken into
/// account when deciding which route is the most efficient. All waypoints
/// must be stopovers for the Directions service to optimize their route.
///
/// If you instruct the Directions service to optimize the order of its
/// waypoints, their order will be returned in the `waypoint_order` field
/// within the
/// `[routes](https://developers.google.com/maps/documentation/directions/intro#Routes)`
/// object. The `waypoint_order` field returns values which are zero-based.
///
/// The following example calculates a road journey from Adelaide, South
/// Australia to each of South Australia's main wine regions using route
/// optimization.
///
/// ## Example
///
/// ```rust
/// .with_waypoint_optimization(true)
/// ```
pub fn with_waypoint_optimization(&'a mut self, waypoint_optimization: bool) -> &'a mut Self {
self.waypoint_optimization = waypoint_optimization;
self
} // fn
} // impl