aws-sdk-location 1.103.0

AWS SDK for Amazon Location Service
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Represents an element of a leg within a route. A step contains instructions for how to move to the next step in the leg.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
pub struct Step {
    /// <p>The starting position of a step. If the position is the first step in the leg, this position is the same as the start position of the leg.</p>
    pub start_position: ::std::vec::Vec<f64>,
    /// <p>The end position of a step. If the position the last step in the leg, this position is the same as the end position of the leg.</p>
    pub end_position: ::std::vec::Vec<f64>,
    /// <p>The travel distance between the step's <code>StartPosition</code> and <code>EndPosition</code>.</p>
    pub distance: f64,
    /// <p>The estimated travel time, in seconds, from the step's <code>StartPosition</code> to the <code>EndPosition</code>. . The travel mode and departure time that you specify in the request determines the calculated time.</p>
    pub duration_seconds: f64,
    /// <p>Represents the start position, or index, in a sequence of steps within the leg's line string geometry. For example, the index of the first step in a leg geometry is <code>0</code>.</p>
    /// <p>Included in the response for queries that set <code>IncludeLegGeometry</code> to <code>True</code>.</p>
    pub geometry_offset: ::std::option::Option<i32>,
}
impl Step {
    /// <p>The starting position of a step. If the position is the first step in the leg, this position is the same as the start position of the leg.</p>
    pub fn start_position(&self) -> &[f64] {
        use std::ops::Deref;
        self.start_position.deref()
    }
    /// <p>The end position of a step. If the position the last step in the leg, this position is the same as the end position of the leg.</p>
    pub fn end_position(&self) -> &[f64] {
        use std::ops::Deref;
        self.end_position.deref()
    }
    /// <p>The travel distance between the step's <code>StartPosition</code> and <code>EndPosition</code>.</p>
    pub fn distance(&self) -> f64 {
        self.distance
    }
    /// <p>The estimated travel time, in seconds, from the step's <code>StartPosition</code> to the <code>EndPosition</code>. . The travel mode and departure time that you specify in the request determines the calculated time.</p>
    pub fn duration_seconds(&self) -> f64 {
        self.duration_seconds
    }
    /// <p>Represents the start position, or index, in a sequence of steps within the leg's line string geometry. For example, the index of the first step in a leg geometry is <code>0</code>.</p>
    /// <p>Included in the response for queries that set <code>IncludeLegGeometry</code> to <code>True</code>.</p>
    pub fn geometry_offset(&self) -> ::std::option::Option<i32> {
        self.geometry_offset
    }
}
impl ::std::fmt::Debug for Step {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        let mut formatter = f.debug_struct("Step");
        formatter.field("start_position", &"*** Sensitive Data Redacted ***");
        formatter.field("end_position", &"*** Sensitive Data Redacted ***");
        formatter.field("distance", &"*** Sensitive Data Redacted ***");
        formatter.field("duration_seconds", &"*** Sensitive Data Redacted ***");
        formatter.field("geometry_offset", &self.geometry_offset);
        formatter.finish()
    }
}
impl Step {
    /// Creates a new builder-style object to manufacture [`Step`](crate::types::Step).
    pub fn builder() -> crate::types::builders::StepBuilder {
        crate::types::builders::StepBuilder::default()
    }
}

/// A builder for [`Step`](crate::types::Step).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
#[non_exhaustive]
pub struct StepBuilder {
    pub(crate) start_position: ::std::option::Option<::std::vec::Vec<f64>>,
    pub(crate) end_position: ::std::option::Option<::std::vec::Vec<f64>>,
    pub(crate) distance: ::std::option::Option<f64>,
    pub(crate) duration_seconds: ::std::option::Option<f64>,
    pub(crate) geometry_offset: ::std::option::Option<i32>,
}
impl StepBuilder {
    /// Appends an item to `start_position`.
    ///
    /// To override the contents of this collection use [`set_start_position`](Self::set_start_position).
    ///
    /// <p>The starting position of a step. If the position is the first step in the leg, this position is the same as the start position of the leg.</p>
    pub fn start_position(mut self, input: f64) -> Self {
        let mut v = self.start_position.unwrap_or_default();
        v.push(input);
        self.start_position = ::std::option::Option::Some(v);
        self
    }
    /// <p>The starting position of a step. If the position is the first step in the leg, this position is the same as the start position of the leg.</p>
    pub fn set_start_position(mut self, input: ::std::option::Option<::std::vec::Vec<f64>>) -> Self {
        self.start_position = input;
        self
    }
    /// <p>The starting position of a step. If the position is the first step in the leg, this position is the same as the start position of the leg.</p>
    pub fn get_start_position(&self) -> &::std::option::Option<::std::vec::Vec<f64>> {
        &self.start_position
    }
    /// Appends an item to `end_position`.
    ///
    /// To override the contents of this collection use [`set_end_position`](Self::set_end_position).
    ///
    /// <p>The end position of a step. If the position the last step in the leg, this position is the same as the end position of the leg.</p>
    pub fn end_position(mut self, input: f64) -> Self {
        let mut v = self.end_position.unwrap_or_default();
        v.push(input);
        self.end_position = ::std::option::Option::Some(v);
        self
    }
    /// <p>The end position of a step. If the position the last step in the leg, this position is the same as the end position of the leg.</p>
    pub fn set_end_position(mut self, input: ::std::option::Option<::std::vec::Vec<f64>>) -> Self {
        self.end_position = input;
        self
    }
    /// <p>The end position of a step. If the position the last step in the leg, this position is the same as the end position of the leg.</p>
    pub fn get_end_position(&self) -> &::std::option::Option<::std::vec::Vec<f64>> {
        &self.end_position
    }
    /// <p>The travel distance between the step's <code>StartPosition</code> and <code>EndPosition</code>.</p>
    /// This field is required.
    pub fn distance(mut self, input: f64) -> Self {
        self.distance = ::std::option::Option::Some(input);
        self
    }
    /// <p>The travel distance between the step's <code>StartPosition</code> and <code>EndPosition</code>.</p>
    pub fn set_distance(mut self, input: ::std::option::Option<f64>) -> Self {
        self.distance = input;
        self
    }
    /// <p>The travel distance between the step's <code>StartPosition</code> and <code>EndPosition</code>.</p>
    pub fn get_distance(&self) -> &::std::option::Option<f64> {
        &self.distance
    }
    /// <p>The estimated travel time, in seconds, from the step's <code>StartPosition</code> to the <code>EndPosition</code>. . The travel mode and departure time that you specify in the request determines the calculated time.</p>
    /// This field is required.
    pub fn duration_seconds(mut self, input: f64) -> Self {
        self.duration_seconds = ::std::option::Option::Some(input);
        self
    }
    /// <p>The estimated travel time, in seconds, from the step's <code>StartPosition</code> to the <code>EndPosition</code>. . The travel mode and departure time that you specify in the request determines the calculated time.</p>
    pub fn set_duration_seconds(mut self, input: ::std::option::Option<f64>) -> Self {
        self.duration_seconds = input;
        self
    }
    /// <p>The estimated travel time, in seconds, from the step's <code>StartPosition</code> to the <code>EndPosition</code>. . The travel mode and departure time that you specify in the request determines the calculated time.</p>
    pub fn get_duration_seconds(&self) -> &::std::option::Option<f64> {
        &self.duration_seconds
    }
    /// <p>Represents the start position, or index, in a sequence of steps within the leg's line string geometry. For example, the index of the first step in a leg geometry is <code>0</code>.</p>
    /// <p>Included in the response for queries that set <code>IncludeLegGeometry</code> to <code>True</code>.</p>
    pub fn geometry_offset(mut self, input: i32) -> Self {
        self.geometry_offset = ::std::option::Option::Some(input);
        self
    }
    /// <p>Represents the start position, or index, in a sequence of steps within the leg's line string geometry. For example, the index of the first step in a leg geometry is <code>0</code>.</p>
    /// <p>Included in the response for queries that set <code>IncludeLegGeometry</code> to <code>True</code>.</p>
    pub fn set_geometry_offset(mut self, input: ::std::option::Option<i32>) -> Self {
        self.geometry_offset = input;
        self
    }
    /// <p>Represents the start position, or index, in a sequence of steps within the leg's line string geometry. For example, the index of the first step in a leg geometry is <code>0</code>.</p>
    /// <p>Included in the response for queries that set <code>IncludeLegGeometry</code> to <code>True</code>.</p>
    pub fn get_geometry_offset(&self) -> &::std::option::Option<i32> {
        &self.geometry_offset
    }
    /// Consumes the builder and constructs a [`Step`](crate::types::Step).
    /// This method will fail if any of the following fields are not set:
    /// - [`start_position`](crate::types::builders::StepBuilder::start_position)
    /// - [`end_position`](crate::types::builders::StepBuilder::end_position)
    /// - [`distance`](crate::types::builders::StepBuilder::distance)
    /// - [`duration_seconds`](crate::types::builders::StepBuilder::duration_seconds)
    pub fn build(self) -> ::std::result::Result<crate::types::Step, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::Step {
            start_position: self.start_position.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "start_position",
                    "start_position was not specified but it is required when building Step",
                )
            })?,
            end_position: self.end_position.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "end_position",
                    "end_position was not specified but it is required when building Step",
                )
            })?,
            distance: self.distance.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "distance",
                    "distance was not specified but it is required when building Step",
                )
            })?,
            duration_seconds: self.duration_seconds.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "duration_seconds",
                    "duration_seconds was not specified but it is required when building Step",
                )
            })?,
            geometry_offset: self.geometry_offset,
        })
    }
}
impl ::std::fmt::Debug for StepBuilder {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        let mut formatter = f.debug_struct("StepBuilder");
        formatter.field("start_position", &"*** Sensitive Data Redacted ***");
        formatter.field("end_position", &"*** Sensitive Data Redacted ***");
        formatter.field("distance", &"*** Sensitive Data Redacted ***");
        formatter.field("duration_seconds", &"*** Sensitive Data Redacted ***");
        formatter.field("geometry_offset", &self.geometry_offset);
        formatter.finish()
    }
}