fn generate_error_display_matchers(
        &self,
        operation_name: &str,
        operation: &Operation,
        service: &Service<'_>,
    ) -> Option<String> {
        let mut type_matchers: Vec<String> = Vec::new();

        if operation.errors.is_some() {
            // botocore has some dulicated errors
            for error in operation.errors() {
                // some botocore definitions include Validation in every errors list, some take it as assumed
                // skip it if it's listed, as we implement it for all error types below.
                // Cloudsearch needs this, look into why.
                if error.idiomatic_error_name() != "Validation"
                    || service.service_id() == Some("CloudSearch")
                    || service.service_id() == Some("SNS")
                {
                    type_matchers.push(format!(
                        "{error_type}::{error_shape}(ref cause) => write!(f, \"{{}}\", cause)",
                        error_type = error_type_name(service, operation_name),
                        error_shape = error.idiomatic_error_name()
                    ))
                }
            }
        }

        Some(type_matchers.join(",\n"))
    }
generate the matcher arms for an error type's implementation of Error's Display
service_crategen/src/commands/generate/codegen/error_types.rs