summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
+ }));
+ }));
+ }));
})
}