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: _add_object_input.rs
    path of file: ./repos/aws-sdk-rust/sdk/lakeformation/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>A new object to add to the governed table.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct AddObjectInput {
    /// <p>The Amazon S3 location of the object.</p>
    pub uri: ::std::string::String,
    /// <p>The Amazon S3 ETag of the object. Returned by <code>GetTableObjects</code> for validation and used to identify changes to the underlying data.</p>
    pub e_tag: ::
    
    pub fn build(self) -> ::std::result::Result<crate::types::AddObjectInput, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::AddObjectInput {
            uri: self.uri.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "uri",
                    "uri was not specified but it is required when building AddObjectInput",
                )
            })?,
            e_tag: self.e_tag.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "e_tag",
                    "e_tag was not specified but it is required when building AddObjectInput",
                )
            })?,
            size: self.size.unwrap_or_default(),
            partition_values: self.partition_values,
        })
    }