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: _signing_certificate.rs
    path of file: ./repos/aws-sdk-rust/sdk/iam/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>Contains information about an X.509 signing certificate.</p>
/// <p>This data type is used as a response element in the <code>UploadSigningCertificate</code> and <code>ListSigningCertificates</code> operations.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct SigningCertificate {
    /// <p>The name of the user the signing certificate is associated with.</p>
    pub user_name: ::std::string::String,
    /// <p>The ID for the signing certificate.</p>
    pub certificate_id: ::std::string::String,
    /// <p>The contents of the signing certificate.</p>
    pub certificate_body: ::std::string::String,
    /// <p>The status of the signing certificate. <code>Active</code> means that the key is valid for API calls, while <code>Inactive</code> means it is not.</p>
    pub status: crate::types::StatusType,
    /// <p>The date when the signing certificate was uploaded.</p>
    pub upload_date: ::std::option::Option<::aws_smithy_types::DateTime>,
}
impl SigningCertificate {
    /// <p>The name of the user the signing certificate is associated with.</p>
    pub fn user_name(&self) -> &str {
        use std::ops::Deref;
        self.user_name.deref()
    }
    /// <p>The ID for the signing certificate.</p>
    pub fn certificate_id(&self) -> &str {
        use std::ops::Der
    
    pub fn build(self) -> ::std::result::Result<crate::types::SigningCertificate, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::SigningCertificate {
            user_name: self.user_name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "user_name",
                    "user_name was not specified but it is required when building SigningCertificate",
                )
            })?,
            certificate_id: self.certificate_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "certificate_id",
                    "certificate_id was not specified but it is required when building SigningCertificate",
                )
            })?,
            certificate_body: self.certificate_body.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "certificate_body",
                    "certificate_body was not specified but it is required when building SigningCertificate",
                )
            })?,
            status: self.status.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "status",
                    "status was not specified but it is required when building SigningCertificate",
                )
            })?,
            upload_date: self.upload_date,
        })
    }