macro_rules! validate_backend {
(
enable: $enable:expr,
name: $backend_name:expr,
required: [ $( ($field:expr, $field_name:expr) ),* $(,)? ]
$(, custom_validator: $custom_validator:expr)?
) => { ... };
}Expand description
Macro for declarative backend validation.
§Validation Rules
For each storage backend (S3, OSS, GCS, Azblob), this function validates:
When backend is enabled (e.g., --s3): All required fields must be non-empty
Note: When backend is disabled, clap’s requires attribute ensures no configuration
fields can be provided at parse time.
§Syntax
ⓘ
validate_backend!(
enable: self.enable_s3,
name: "S3",
required: [(field1, "name1"), (field2, "name2"), ...],
custom_validator: |missing| { ... } // optional
)§Arguments
enable: Boolean expression indicating if backend is enabledname: Human-readable backend name for error messagesrequired: Array of (field_ref, field_name) tuples for required fieldscustom_validator: Optional closure for complex validation logic
§Example
ⓘ
validate_backend!(
enable: self.enable_s3,
name: "S3",
required: [
(&self.s3.s3_bucket, "bucket"),
(&self.s3.s3_access_key_id, "access key ID"),
]
)