diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-15 16:37:08 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-17 16:30:22 -0600 |
| commit | 45df4d0d9b577fecee798d672695fe24ff57fb1b (patch) | |
| tree | 1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/itertools/src/put_back_n_impl.rs | |
| parent | f94f79608393d4ab127db63cc41668445ef6b243 (diff) | |
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based
authorization system with SpiceDB's relation-based authorization.
Key changes:
- Migrate from Rust to Go implementation
- Replace Cedar policies with SpiceDB schema and relationships
- Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks
- Update build system and dependencies for Go ecosystem
- Maintain Envoy integration for external authorization
This change enables more flexible permission modeling through SpiceDB's
Google Zanzibar inspired relation-based system, supporting complex
hierarchical permissions that were difficult to express in Cedar.
Breaking change: Existing Cedar policies and Rust-based configuration
will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/itertools/src/put_back_n_impl.rs')
| -rw-r--r-- | vendor/itertools/src/put_back_n_impl.rs | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/vendor/itertools/src/put_back_n_impl.rs b/vendor/itertools/src/put_back_n_impl.rs deleted file mode 100644 index a9eb4179..00000000 --- a/vendor/itertools/src/put_back_n_impl.rs +++ /dev/null @@ -1,71 +0,0 @@ -use alloc::vec::Vec; - -use crate::size_hint; - -/// An iterator adaptor that allows putting multiple -/// items in front of the iterator. -/// -/// Iterator element type is `I::Item`. -#[derive(Debug, Clone)] -#[must_use = "iterator adaptors are lazy and do nothing unless consumed"] -pub struct PutBackN<I: Iterator> { - top: Vec<I::Item>, - iter: I, -} - -/// Create an iterator where you can put back multiple values to the front -/// of the iteration. -/// -/// Iterator element type is `I::Item`. -pub fn put_back_n<I>(iterable: I) -> PutBackN<I::IntoIter> -where - I: IntoIterator, -{ - PutBackN { - top: Vec::new(), - iter: iterable.into_iter(), - } -} - -impl<I: Iterator> PutBackN<I> { - /// Puts `x` in front of the iterator. - /// - /// The values are yielded in order of the most recently put back - /// values first. - /// - /// ```rust - /// use itertools::put_back_n; - /// - /// let mut it = put_back_n(1..5); - /// it.next(); - /// it.put_back(1); - /// it.put_back(0); - /// - /// assert!(itertools::equal(it, 0..5)); - /// ``` - #[inline] - pub fn put_back(&mut self, x: I::Item) { - self.top.push(x); - } -} - -impl<I: Iterator> Iterator for PutBackN<I> { - type Item = I::Item; - #[inline] - fn next(&mut self) -> Option<Self::Item> { - self.top.pop().or_else(|| self.iter.next()) - } - - #[inline] - fn size_hint(&self) -> (usize, Option<usize>) { - size_hint::add_scalar(self.iter.size_hint(), self.top.len()) - } - - fn fold<B, F>(self, mut init: B, mut f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - init = self.top.into_iter().rfold(init, &mut f); - self.iter.fold(init, f) - } -} |
