Resolve a scope to its full set of `(permission, collection)` grants. Recursively expands `INCLUDE` references. Detects cycles.
(&self, name: &str)
| 173 | /// |
| 174 | /// Recursively expands `INCLUDE` references. Detects cycles. |
| 175 | pub fn resolve(&self, name: &str) -> Vec<(String, String)> { |
| 176 | let scopes = self.scopes.read().unwrap_or_else(|p| p.into_inner()); |
| 177 | let mut resolved = Vec::new(); |
| 178 | let mut visited = std::collections::HashSet::new(); |
| 179 | Self::resolve_recursive(&scopes, name, &mut resolved, &mut visited); |
| 180 | resolved |
| 181 | } |
| 182 | |
| 183 | fn resolve_recursive( |
| 184 | scopes: &HashMap<String, ScopeDefinition>, |