summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-06-20 10:51:56 -0600
committermo khan <mo@mokhan.ca>2025-06-20 10:51:56 -0600
commite88052fe49c42350d392624101af4be1b10680cb (patch)
treeb85629aa4ab18311f3cc90b2437281c5df6e8f8d
parent57c7bd667bc9fc809d1e1ee49c0696a13d3bfd8d (diff)
refactor: improve generic builder methods
-rw-r--r--src/authorization/cedar_authorizer.rs37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/authorization/cedar_authorizer.rs b/src/authorization/cedar_authorizer.rs
index cc1fc93b..547a1318 100644
--- a/src/authorization/cedar_authorizer.rs
+++ b/src/authorization/cedar_authorizer.rs
@@ -45,30 +45,25 @@ mod tests {
T::default()
}
- fn build_with<T: Default>(initializer: impl std::ops::FnOnce(T) -> T) -> T {
- let item = build::<T>();
- initializer(item)
+ fn build_with<T, F>(initializer: F) -> T
+ where
+ T: Default,
+ F: std::ops::FnOnce(&mut T),
+ {
+ let mut item = build::<T>();
+ initializer(&mut item);
+ item
}
fn create_test_request_with_headers(headers: HashMap<String, String>) -> CheckRequest {
- build_with::<CheckRequest>(|mut item: CheckRequest| {
- item.attributes = Some(build_with::<AttributeContext>(
- |mut item: AttributeContext| {
- item.request = Some(build_with::<attribute_context::Request>(
- |mut item: attribute_context::Request| {
- item.http = Some(build_with::<attribute_context::HttpRequest>(
- |mut item: attribute_context::HttpRequest| {
- item.headers = headers;
- item
- },
- ));
- item
- },
- ));
- item
- },
- ));
- item
+ build_with(|item: &mut CheckRequest| {
+ item.attributes = Some(build_with(|item: &mut AttributeContext| {
+ item.request = Some(build_with(|item: &mut attribute_context::Request| {
+ item.http = Some(build_with(|item: &mut attribute_context::HttpRequest| {
+ item.headers = headers;
+ }));
+ }));
+ }));
})
}