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

        if operation.errors.is_some() {
            for error in operation.errors() {
                if error.shape != "ValidationException" {
                    type_matchers.push(format!("\"{error_shape}\" => return RusotoError::Service({error_type}::{error_name}(err.msg))",
                        error_shape = error.shape,
                        error_type = error_type,
                        error_name = error.idiomatic_error_name()))
                }
            }
        }
        type_matchers
            .push("\"ValidationException\" => return RusotoError::Validation(err.msg)".to_string());
        type_matchers.push("_ => {}".to_string());
        type_matchers.join(",\n")
    }
generate the arms for a match expression that maps an error name string from the response JSON
to a concrete error type from this operation's errors enum
service_crategen/src/commands/generate/codegen/error_types.rs