You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: _kinesis_stream_source_configuration.rs
    path of file: ./repos/aws-sdk-rust/sdk/firehose/src/types
    
    the code of the file until where you have to start completion: // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct KinesisStreamSourceConfiguration {
    /// <p>The ARN of the source Kinesis data stream. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-kinesis-streams">Amazon Kinesis Data Streams ARN Format</a>.</p>
    pub kinesis_stream_arn: ::std::string::String,
    /// <p>The ARN of the role that provides access to the source Kinesis data str
    
    pub fn build(self) -> ::std::result::Result<crate::types::KinesisStreamSourceConfiguration, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::KinesisStreamSourceConfiguration {
            kinesis_stream_arn: self.kinesis_stream_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "kinesis_stream_arn",
                    "kinesis_stream_arn was not specified but it is required when building KinesisStreamSourceConfiguration",
                )
            })?,
            role_arn: self.role_arn.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "role_arn",
                    "role_arn was not specified but it is required when building KinesisStreamSourceConfiguration",
                )
            })?,
        })
    }