refactor: move walk options contract (#3549)

This commit is contained in:
安正超
2026-06-18 08:18:26 +08:00
committed by GitHub
parent 604379d62f
commit 36f7ad6936
6 changed files with 88 additions and 39 deletions
+1 -1
View File
@@ -27,4 +27,4 @@ pub use multipart::{CompletePart, ListMultipartsInfo, ListPartsInfo, MultipartIn
pub use object::{HTTPPreconditions, HTTPRangeError, HTTPRangeSpec, ObjectLockRetentionOptions};
pub use object::{ListObjectVersionsInfo, ListObjectsInfo, ListObjectsV2Info, ObjectInfoOrErr};
pub use object::{ObjectPreconditionError, ObjectPreconditionPart, ObjectPreconditionState};
pub use object::{VersionMarker, WalkVersionsSortOrder};
pub use object::{VersionMarker, WalkOptions, WalkVersionsSortOrder};
+40
View File
@@ -154,6 +154,31 @@ pub enum WalkVersionsSortOrder {
Descending,
}
#[derive(Clone)]
pub struct WalkOptions<Filter> {
pub filter: Option<Filter>,
pub marker: Option<String>,
pub latest_only: bool,
pub ask_disks: String,
pub versions_sort: WalkVersionsSortOrder,
pub limit: usize,
pub include_free_versions: bool,
}
impl<Filter> Default for WalkOptions<Filter> {
fn default() -> Self {
Self {
filter: None,
marker: None,
latest_only: false,
ask_disks: String::new(),
versions_sort: WalkVersionsSortOrder::default(),
limit: 0,
include_free_versions: false,
}
}
}
#[derive(Debug, Default)]
pub struct ListObjectsInfo<ObjectItem> {
pub is_truncated: bool,
@@ -418,6 +443,21 @@ mod tests {
assert!(matches!(WalkVersionsSortOrder::default(), WalkVersionsSortOrder::Ascending));
}
#[test]
fn walk_options_defaults_preserve_existing_contract() {
type TestFilter = fn(&str) -> bool;
let opts = WalkOptions::<TestFilter>::default();
assert!(opts.filter.is_none());
assert!(opts.marker.is_none());
assert!(!opts.latest_only);
assert!(opts.ask_disks.is_empty());
assert!(matches!(opts.versions_sort, WalkVersionsSortOrder::Ascending));
assert_eq!(opts.limit, 0);
assert!(!opts.include_free_versions);
}
#[test]
fn object_list_response_contracts_default_to_empty_collections() {
let v1 = ListObjectsInfo::<()>::default();